"use strict"; // Generated by Air::dumpAsJS from gaussianBlur#A8vcYg in Kraken/imaging-gaussian-blur function createPayloadImagingGaussianBlurGaussianBlur() { let code = new Code(); let bb0 = code.addBlock(); let bb1 = code.addBlock(); let bb2 = code.addBlock(); let bb3 = code.addBlock(); let bb4 = code.addBlock(); let bb5 = code.addBlock(); let bb6 = code.addBlock(); let bb7 = code.addBlock(); let bb8 = code.addBlock(); let bb9 = code.addBlock(); let bb10 = code.addBlock(); let bb11 = code.addBlock(); let bb12 = code.addBlock(); let bb13 = code.addBlock(); let bb14 = code.addBlock(); let bb15 = code.addBlock(); let bb16 = code.addBlock(); let bb17 = code.addBlock(); let bb18 = code.addBlock(); let bb19 = code.addBlock(); let bb20 = code.addBlock(); let bb21 = code.addBlock(); let bb22 = code.addBlock(); let bb23 = code.addBlock(); let bb24 = code.addBlock(); let bb25 = code.addBlock(); let bb26 = code.addBlock(); let bb27 = code.addBlock(); let bb28 = code.addBlock(); let bb29 = code.addBlock(); let bb30 = code.addBlock(); let bb31 = code.addBlock(); let bb32 = code.addBlock(); let bb33 = code.addBlock(); let bb34 = code.addBlock(); let bb35 = code.addBlock(); let bb36 = code.addBlock(); let slot0 = code.addStackSlot(40, Locked); let slot1 = code.addStackSlot(8, Spill); let slot2 = code.addStackSlot(8, Spill); let slot3 = code.addStackSlot(4, Spill); let slot4 = code.addStackSlot(8, Spill); let slot5 = code.addStackSlot(8, Spill); let slot6 = code.addStackSlot(40, Locked); slot6.setOffsetFromFP(-40); let tmp141 = code.newTmp(GP); let tmp140 = code.newTmp(GP); let tmp139 = code.newTmp(GP); let tmp138 = code.newTmp(GP); let tmp137 = code.newTmp(GP); let tmp136 = code.newTmp(GP); let tmp135 = code.newTmp(GP); let tmp134 = code.newTmp(GP); let tmp133 = code.newTmp(GP); let tmp132 = code.newTmp(GP); let tmp131 = code.newTmp(GP); let tmp130 = code.newTmp(GP); let tmp129 = code.newTmp(GP); let tmp128 = code.newTmp(GP); let tmp127 = code.newTmp(GP); let tmp126 = code.newTmp(GP); let tmp125 = code.newTmp(GP); let tmp124 = code.newTmp(GP); let tmp123 = code.newTmp(GP); let tmp122 = code.newTmp(GP); let tmp121 = code.newTmp(GP); let tmp120 = code.newTmp(GP); let tmp119 = code.newTmp(GP); let tmp118 = code.newTmp(GP); let tmp117 = code.newTmp(GP); let tmp116 = code.newTmp(GP); let tmp115 = code.newTmp(GP); let tmp114 = code.newTmp(GP); let tmp113 = code.newTmp(GP); let tmp112 = code.newTmp(GP); let tmp111 = code.newTmp(GP); let tmp110 = code.newTmp(GP); let tmp109 = code.newTmp(GP); let tmp108 = code.newTmp(GP); let tmp107 = code.newTmp(GP); let tmp106 = code.newTmp(GP); let tmp105 = code.newTmp(GP); let tmp104 = code.newTmp(GP); let tmp103 = code.newTmp(GP); let tmp102 = code.newTmp(GP); let tmp101 = code.newTmp(GP); let tmp100 = code.newTmp(GP); let tmp99 = code.newTmp(GP); let tmp98 = code.newTmp(GP); let tmp97 = code.newTmp(GP); let tmp96 = code.newTmp(GP); let tmp95 = code.newTmp(GP); let tmp94 = code.newTmp(GP); let tmp93 = code.newTmp(GP); let tmp92 = code.newTmp(GP); let tmp91 = code.newTmp(GP); let tmp90 = code.newTmp(GP); let tmp89 = code.newTmp(GP); let tmp88 = code.newTmp(GP); let tmp87 = code.newTmp(GP); let tmp86 = code.newTmp(GP); let tmp85 = code.newTmp(GP); let tmp84 = code.newTmp(GP); let tmp83 = code.newTmp(GP); let tmp82 = code.newTmp(GP); let tmp81 = code.newTmp(GP); let tmp80 = code.newTmp(GP); let tmp79 = code.newTmp(GP); let tmp78 = code.newTmp(GP); let tmp77 = code.newTmp(GP); let tmp76 = code.newTmp(GP); let tmp75 = code.newTmp(GP); let tmp74 = code.newTmp(GP); let tmp73 = code.newTmp(GP); let tmp72 = code.newTmp(GP); let tmp71 = code.newTmp(GP); let tmp70 = code.newTmp(GP); let tmp69 = code.newTmp(GP); let tmp68 = code.newTmp(GP); let tmp67 = code.newTmp(GP); let tmp66 = code.newTmp(GP); let tmp65 = code.newTmp(GP); let tmp64 = code.newTmp(GP); let tmp63 = code.newTmp(GP); let tmp62 = code.newTmp(GP); let tmp61 = code.newTmp(GP); let tmp60 = code.newTmp(GP); let tmp59 = code.newTmp(GP); let tmp58 = code.newTmp(GP); let tmp57 = code.newTmp(GP); let tmp56 = code.newTmp(GP); let tmp55 = code.newTmp(GP); let tmp54 = code.newTmp(GP); let tmp53 = code.newTmp(GP); let tmp52 = code.newTmp(GP); let tmp51 = code.newTmp(GP); let tmp50 = code.newTmp(GP); let tmp49 = code.newTmp(GP); let tmp48 = code.newTmp(GP); let tmp47 = code.newTmp(GP); let tmp46 = code.newTmp(GP); let tmp45 = code.newTmp(GP); let tmp44 = code.newTmp(GP); let tmp43 = code.newTmp(GP); let tmp42 = code.newTmp(GP); let tmp41 = code.newTmp(GP); let tmp40 = code.newTmp(GP); let tmp39 = code.newTmp(GP); let tmp38 = code.newTmp(GP); let tmp37 = code.newTmp(GP); let tmp36 = code.newTmp(GP); let tmp35 = code.newTmp(GP); let tmp34 = code.newTmp(GP); let tmp33 = code.newTmp(GP); let tmp32 = code.newTmp(GP); let tmp31 = code.newTmp(GP); let tmp30 = code.newTmp(GP); let tmp29 = code.newTmp(GP); let tmp28 = code.newTmp(GP); let tmp27 = code.newTmp(GP); let tmp26 = code.newTmp(GP); let tmp25 = code.newTmp(GP); let tmp24 = code.newTmp(GP); let tmp23 = code.newTmp(GP); let tmp22 = code.newTmp(GP); let tmp21 = code.newTmp(GP); let tmp20 = code.newTmp(GP); let tmp19 = code.newTmp(GP); let tmp18 = code.newTmp(GP); let tmp17 = code.newTmp(GP); let tmp16 = code.newTmp(GP); let tmp15 = code.newTmp(GP); let tmp14 = code.newTmp(GP); let tmp13 = code.newTmp(GP); let tmp12 = code.newTmp(GP); let tmp11 = code.newTmp(GP); let tmp10 = code.newTmp(GP); let tmp9 = code.newTmp(GP); let tmp8 = code.newTmp(GP); let tmp7 = code.newTmp(GP); let tmp6 = code.newTmp(GP); let tmp5 = code.newTmp(GP); let tmp4 = code.newTmp(GP); let tmp3 = code.newTmp(GP); let tmp2 = code.newTmp(GP); let tmp1 = code.newTmp(GP); let tmp0 = code.newTmp(GP); let ftmp74 = code.newTmp(FP); let ftmp73 = code.newTmp(FP); let ftmp72 = code.newTmp(FP); let ftmp71 = code.newTmp(FP); let ftmp70 = code.newTmp(FP); let ftmp69 = code.newTmp(FP); let ftmp68 = code.newTmp(FP); let ftmp67 = code.newTmp(FP); let ftmp66 = code.newTmp(FP); let ftmp65 = code.newTmp(FP); let ftmp64 = code.newTmp(FP); let ftmp63 = code.newTmp(FP); let ftmp62 = code.newTmp(FP); let ftmp61 = code.newTmp(FP); let ftmp60 = code.newTmp(FP); let ftmp59 = code.newTmp(FP); let ftmp58 = code.newTmp(FP); let ftmp57 = code.newTmp(FP); let ftmp56 = code.newTmp(FP); let ftmp55 = code.newTmp(FP); let ftmp54 = code.newTmp(FP); let ftmp53 = code.newTmp(FP); let ftmp52 = code.newTmp(FP); let ftmp51 = code.newTmp(FP); let ftmp50 = code.newTmp(FP); let ftmp49 = code.newTmp(FP); let ftmp48 = code.newTmp(FP); let ftmp47 = code.newTmp(FP); let ftmp46 = code.newTmp(FP); let ftmp45 = code.newTmp(FP); let ftmp44 = code.newTmp(FP); let ftmp43 = code.newTmp(FP); let ftmp42 = code.newTmp(FP); let ftmp41 = code.newTmp(FP); let ftmp40 = code.newTmp(FP); let ftmp39 = code.newTmp(FP); let ftmp38 = code.newTmp(FP); let ftmp37 = code.newTmp(FP); let ftmp36 = code.newTmp(FP); let ftmp35 = code.newTmp(FP); let ftmp34 = code.newTmp(FP); let ftmp33 = code.newTmp(FP); let ftmp32 = code.newTmp(FP); let ftmp31 = code.newTmp(FP); let ftmp30 = code.newTmp(FP); let ftmp29 = code.newTmp(FP); let ftmp28 = code.newTmp(FP); let ftmp27 = code.newTmp(FP); let ftmp26 = code.newTmp(FP); let ftmp25 = code.newTmp(FP); let ftmp24 = code.newTmp(FP); let ftmp23 = code.newTmp(FP); let ftmp22 = code.newTmp(FP); let ftmp21 = code.newTmp(FP); let ftmp20 = code.newTmp(FP); let ftmp19 = code.newTmp(FP); let ftmp18 = code.newTmp(FP); let ftmp17 = code.newTmp(FP); let ftmp16 = code.newTmp(FP); let ftmp15 = code.newTmp(FP); let ftmp14 = code.newTmp(FP); let ftmp13 = code.newTmp(FP); let ftmp12 = code.newTmp(FP); let ftmp11 = code.newTmp(FP); let ftmp10 = code.newTmp(FP); let ftmp9 = code.newTmp(FP); let ftmp8 = code.newTmp(FP); let ftmp7 = code.newTmp(FP); let ftmp6 = code.newTmp(FP); let ftmp5 = code.newTmp(FP); let ftmp4 = code.newTmp(FP); let ftmp3 = code.newTmp(FP); let ftmp2 = code.newTmp(FP); let ftmp1 = code.newTmp(FP); let ftmp0 = code.newTmp(FP); let inst; let arg; bb0.successors.push(new FrequentedBlock(bb2, Normal)); bb0.successors.push(new FrequentedBlock(bb1, Rare)); inst = new Inst(Move); arg = Arg.createBigImm(144305904, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createAddr(Reg.rbp, 16); inst.args.push(arg); bb0.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createTmp(Reg.rbp); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.extraEarlyClobberedRegs.add(Reg.r11); inst.extraClobberedRegs.add(Reg.r11); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Scratch, type: GP, width: 64}); bb0.append(inst); inst = new Inst(Move); arg = Arg.createBigImm(142547168, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createAddr(Reg.rax, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createBigImm(142547184, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createAddr(Reg.rax, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createBigImm(142547192, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createAddr(Reg.rax, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createBigImm(142547200, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createAddr(Reg.rax, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createBigImm(142547208, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createAddr(Reg.rax, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createBigImm(142547216, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createAddr(Reg.rax, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createBigImm(142547224, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createAddr(Reg.rax, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createBigImm(142547232, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createAddr(Reg.rax, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createBigImm(142547240, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createAddr(Reg.rdi, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move); arg = Arg.createBigImm(0, -65536); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); bb0.append(inst); inst = new Inst(Add64); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); bb0.append(inst); inst = new Inst(Move64ToDouble); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); bb0.append(inst); inst = new Inst(BranchDouble); arg = Arg.createDoubleCond(DoubleEqual); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); bb0.append(inst); bb1.successors.push(new FrequentedBlock(bb2, Normal)); bb1.predecessors.push(bb0); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(Below); inst.args.push(arg); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); bb1.append(inst); inst = new Inst(ConvertInt32ToDouble); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); bb1.append(inst); inst = new Inst(Jump); bb1.append(inst); bb2.successors.push(new FrequentedBlock(bb4, Normal)); bb2.successors.push(new FrequentedBlock(bb3, Rare)); bb2.predecessors.push(bb0); bb2.predecessors.push(bb1); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(Below); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); bb2.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(Below); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); bb2.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(Below); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); bb2.append(inst); inst = new Inst(Add64); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); bb2.append(inst); inst = new Inst(Move64ToDouble); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); bb2.append(inst); inst = new Inst(BranchDouble); arg = Arg.createDoubleCond(DoubleEqual); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); bb2.append(inst); bb3.successors.push(new FrequentedBlock(bb4, Normal)); bb3.predecessors.push(bb2); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(Below); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); bb3.append(inst); inst = new Inst(ConvertInt32ToDouble); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); bb3.append(inst); inst = new Inst(Jump); bb3.append(inst); bb4.successors.push(new FrequentedBlock(bb6, Normal)); bb4.successors.push(new FrequentedBlock(bb5, Rare)); bb4.predecessors.push(bb2); bb4.predecessors.push(bb3); inst = new Inst(Add64); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); bb4.append(inst); inst = new Inst(Move64ToDouble); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); bb4.append(inst); inst = new Inst(BranchDouble); arg = Arg.createDoubleCond(DoubleEqual); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); bb4.append(inst); bb5.successors.push(new FrequentedBlock(bb6, Normal)); bb5.predecessors.push(bb4); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(Below); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); bb5.append(inst); inst = new Inst(ConvertInt32ToDouble); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); bb5.append(inst); inst = new Inst(Jump); bb5.append(inst); bb6.successors.push(new FrequentedBlock(bb8, Normal)); bb6.successors.push(new FrequentedBlock(bb7, Rare)); bb6.predecessors.push(bb4); bb6.predecessors.push(bb5); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(Below); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); bb6.append(inst); inst = new Inst(Add64); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); bb6.append(inst); inst = new Inst(Move64ToDouble); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); bb6.append(inst); inst = new Inst(BranchDouble); arg = Arg.createDoubleCond(DoubleEqual); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); bb6.append(inst); bb7.successors.push(new FrequentedBlock(bb8, Normal)); bb7.predecessors.push(bb6); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(Below); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); bb7.append(inst); inst = new Inst(ConvertInt32ToDouble); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); bb7.append(inst); inst = new Inst(Jump); bb7.append(inst); bb8.successors.push(new FrequentedBlock(bb10, Normal)); bb8.successors.push(new FrequentedBlock(bb9, Rare)); bb8.predecessors.push(bb6); bb8.predecessors.push(bb7); inst = new Inst(Move); arg = Arg.createBigImm(117076488, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); bb8.append(inst); inst = new Inst(Move); arg = Arg.createAddr(Reg.r8, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r9); inst.args.push(arg); bb8.append(inst); inst = new Inst(Add64); arg = Arg.createTmp(Reg.r9); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); bb8.append(inst); inst = new Inst(Move64ToDouble); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm6); inst.args.push(arg); bb8.append(inst); inst = new Inst(BranchDouble); arg = Arg.createDoubleCond(DoubleEqual); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm6); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm6); inst.args.push(arg); bb8.append(inst); bb9.successors.push(new FrequentedBlock(bb10, Normal)); bb9.predecessors.push(bb8); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(Below); inst.args.push(arg); arg = Arg.createTmp(Reg.r9); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.r9); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); bb9.append(inst); inst = new Inst(ConvertInt32ToDouble); arg = Arg.createTmp(Reg.r9); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm6); inst.args.push(arg); bb9.append(inst); inst = new Inst(Jump); bb9.append(inst); bb10.successors.push(new FrequentedBlock(bb18, Normal)); bb10.predecessors.push(bb8); bb10.predecessors.push(bb9); inst = new Inst(Move); arg = Arg.createBigImm(144506584, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); bb10.append(inst); inst = new Inst(Move); arg = Arg.createAddr(Reg.rdi, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r9); inst.args.push(arg); bb10.append(inst); inst = new Inst(Move32); arg = Arg.createAddr(Reg.r9, -8); inst.args.push(arg); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); bb10.append(inst); inst = new Inst(Move); arg = Arg.createBigImm(144506544, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); bb10.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(NotEqual); inst.args.push(arg); arg = Arg.createAddr(Reg.rdi, 0); inst.args.push(arg); arg = Arg.createImm(80); inst.args.push(arg); arg = Arg.createBigImm(144506544, 1); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); bb10.append(inst); inst = new Inst(Move); arg = Arg.createBigImm(144506552, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); bb10.append(inst); inst = new Inst(Move); arg = Arg.createAddr(Reg.rdi, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); bb10.append(inst); inst = new Inst(Move); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createStack(slot2, 0); inst.args.push(arg); bb10.append(inst); inst = new Inst(Move); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); bb10.append(inst); inst = new Inst(Move32); arg = Arg.createAddr(Reg.rdi, -8); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); bb10.append(inst); inst = new Inst(Move32); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createStack(slot3, 0); inst.args.push(arg); bb10.append(inst); inst = new Inst(MoveZeroToDouble); arg = Arg.createTmp(Reg.xmm7); inst.args.push(arg); bb10.append(inst); inst = new Inst(Move); arg = Arg.createImm(10); inst.args.push(arg); arg = Arg.createStack(slot4, 0); inst.args.push(arg); bb10.append(inst); inst = new Inst(Move); arg = Arg.createBigImm(2, -65536); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); bb10.append(inst); inst = new Inst(Jump); bb10.append(inst); bb11.successors.push(new FrequentedBlock(bb13, Normal)); bb11.predecessors.push(bb35); inst = new Inst(Move); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); bb11.append(inst); inst = new Inst(Move); arg = Arg.createImm(0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); bb11.append(inst); inst = new Inst(Jump); bb11.append(inst); bb12.successors.push(new FrequentedBlock(bb13, Normal)); bb12.predecessors.push(bb34); inst = new Inst(Move32); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); bb12.append(inst); inst = new Inst(Jump); bb12.append(inst); bb13.successors.push(new FrequentedBlock(bb15, Normal)); bb13.predecessors.push(bb11); bb13.predecessors.push(bb12); inst = new Inst(Move); arg = Arg.createImm(-6); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb13.append(inst); inst = new Inst(MoveDouble); arg = Arg.createTmp(Reg.xmm7); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); bb13.append(inst); inst = new Inst(MoveDouble); arg = Arg.createTmp(Reg.xmm7); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); bb13.append(inst); inst = new Inst(MoveDouble); arg = Arg.createTmp(Reg.xmm7); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); bb13.append(inst); inst = new Inst(MoveDouble); arg = Arg.createTmp(Reg.xmm7); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); bb13.append(inst); inst = new Inst(Jump); bb13.append(inst); bb14.successors.push(new FrequentedBlock(bb15, Normal)); bb14.predecessors.push(bb31); inst = new Inst(Move32); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb14.append(inst); inst = new Inst(Jump); bb14.append(inst); bb15.successors.push(new FrequentedBlock(bb28, Normal)); bb15.successors.push(new FrequentedBlock(bb16, Normal)); bb15.predecessors.push(bb13); bb15.predecessors.push(bb14); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(Overflow); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); bb15.append(inst); inst = new Inst(Branch32); arg = Arg.createRelCond(LessThan); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createImm(0); inst.args.push(arg); bb15.append(inst); bb16.successors.push(new FrequentedBlock(bb29, Normal)); bb16.successors.push(new FrequentedBlock(bb17, Normal)); bb16.predecessors.push(bb15); inst = new Inst(Branch32); arg = Arg.createRelCond(GreaterThanOrEqual); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createImm(267); inst.args.push(arg); bb16.append(inst); bb17.successors.push(new FrequentedBlock(bb18, Normal)); bb17.predecessors.push(bb16); inst = new Inst(Move); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); bb17.append(inst); inst = new Inst(Move); arg = Arg.createImm(-6); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); bb17.append(inst); inst = new Inst(Jump); bb17.append(inst); bb18.successors.push(new FrequentedBlock(bb20, Normal)); bb18.successors.push(new FrequentedBlock(bb19, Rare)); bb18.predecessors.push(bb10); bb18.predecessors.push(bb17); inst = new Inst(Move); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); bb18.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(Overflow); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); bb18.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(Overflow); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createImm(400); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); bb18.append(inst); inst = new Inst(BranchTest32); arg = Arg.createResCond(NonZero); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); bb18.append(inst); bb19.successors.push(new FrequentedBlock(bb20, Normal)); bb19.predecessors.push(bb18); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(LessThan); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createImm(0); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); bb19.append(inst); inst = new Inst(Jump); bb19.append(inst); bb20.successors.push(new FrequentedBlock(bb22, Normal)); bb20.predecessors.push(bb18); bb20.predecessors.push(bb19); inst = new Inst(Move32); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); bb20.append(inst); inst = new Inst(Rshift32); arg = Arg.createImm(31); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); bb20.append(inst); inst = new Inst(Add32); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); bb20.append(inst); inst = new Inst(Xor32); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); bb20.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(LessThan); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createImm(0); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); bb20.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(AboveOrEqual); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createStack(slot3, 0); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); bb20.append(inst); inst = new Inst(Move); arg = Arg.createStack(slot2, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); bb20.append(inst); inst = new Inst(Move); arg = Arg.createIndex(Reg.rsi, Reg.rdi, 8, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); bb20.append(inst); inst = new Inst(Move); arg = Arg.createImm(10); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); bb20.append(inst); inst = new Inst(MoveConditionallyTest64); arg = Arg.createResCond(NonZero); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createImm(-1); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); bb20.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(NonZero); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.r10); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); bb20.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(NotEqual); inst.args.push(arg); arg = Arg.createAddr(Reg.rdi, 0); inst.args.push(arg); arg = Arg.createImm(79); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); bb20.append(inst); inst = new Inst(Move); arg = Arg.createAddr(Reg.rdi, 8); inst.args.push(arg); arg = Arg.createTmp(Reg.r12); inst.args.push(arg); bb20.append(inst); inst = new Inst(Move32); arg = Arg.createAddr(Reg.r12, -8); inst.args.push(arg); arg = Arg.createTmp(Reg.r13); inst.args.push(arg); bb20.append(inst); inst = new Inst(Jump); bb20.append(inst); bb21.successors.push(new FrequentedBlock(bb22, Normal)); bb21.predecessors.push(bb27); inst = new Inst(Move32); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); bb21.append(inst); inst = new Inst(Jump); bb21.append(inst); bb22.successors.push(new FrequentedBlock(bb25, Normal)); bb22.successors.push(new FrequentedBlock(bb23, Normal)); bb22.predecessors.push(bb20); bb22.predecessors.push(bb21); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(Overflow); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); bb22.append(inst); inst = new Inst(Branch32); arg = Arg.createRelCond(LessThan); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createImm(0); inst.args.push(arg); bb22.append(inst); bb23.successors.push(new FrequentedBlock(bb26, Normal)); bb23.successors.push(new FrequentedBlock(bb24, Normal)); bb23.predecessors.push(bb22); inst = new Inst(Branch32); arg = Arg.createRelCond(GreaterThanOrEqual); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createImm(400); inst.args.push(arg); bb23.append(inst); bb24.successors.push(new FrequentedBlock(bb27, Normal)); bb24.predecessors.push(bb23); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(Overflow); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); bb24.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(Overflow); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); arg = Arg.createImm(4); inst.args.push(arg); arg = Arg.createTmp(Reg.r15); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); bb24.append(inst); inst = new Inst(Add32); arg = Arg.createImm(3); inst.args.push(arg); arg = Arg.createTmp(Reg.r15); inst.args.push(arg); arg = Arg.createTmp(Reg.r14); inst.args.push(arg); bb24.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(AboveOrEqual); inst.args.push(arg); arg = Arg.createTmp(Reg.r15); inst.args.push(arg); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.r15); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); bb24.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(AboveOrEqual); inst.args.push(arg); arg = Arg.createTmp(Reg.r14); inst.args.push(arg); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.r15); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); bb24.append(inst); inst = new Inst(MoveDouble); arg = Arg.createIndex(Reg.r9, Reg.r15, 8, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm0); inst.args.push(arg); bb24.append(inst); inst = new Inst(Move32); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); bb24.append(inst); inst = new Inst(Rshift32); arg = Arg.createImm(31); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); bb24.append(inst); inst = new Inst(Add32); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); bb24.append(inst); inst = new Inst(Xor32); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); bb24.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(LessThan); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); arg = Arg.createImm(0); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); bb24.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(AboveOrEqual); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); arg = Arg.createTmp(Reg.r13); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.rbx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); bb24.append(inst); inst = new Inst(MoveDouble); arg = Arg.createIndex(Reg.r12, Reg.rbx, 8, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm4); inst.args.push(arg); bb24.append(inst); inst = new Inst(MulDouble); arg = Arg.createTmp(Reg.xmm0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm4); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm0); inst.args.push(arg); bb24.append(inst); inst = new Inst(AddDouble); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); bb24.append(inst); inst = new Inst(Add32); arg = Arg.createImm(1); inst.args.push(arg); arg = Arg.createTmp(Reg.r15); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); bb24.append(inst); inst = new Inst(MulDouble); arg = Arg.createIndex(Reg.r9, Reg.rsi, 8, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm4); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm0); inst.args.push(arg); bb24.append(inst); inst = new Inst(AddDouble); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); bb24.append(inst); inst = new Inst(Add32); arg = Arg.createImm(2); inst.args.push(arg); arg = Arg.createTmp(Reg.r15); inst.args.push(arg); arg = Arg.createTmp(Reg.r15); inst.args.push(arg); bb24.append(inst); inst = new Inst(MulDouble); arg = Arg.createIndex(Reg.r9, Reg.r15, 8, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm4); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm0); inst.args.push(arg); bb24.append(inst); inst = new Inst(AddDouble); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); bb24.append(inst); inst = new Inst(MulDouble); arg = Arg.createIndex(Reg.r9, Reg.r14, 8, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm4); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm4); inst.args.push(arg); bb24.append(inst); inst = new Inst(AddDouble); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm4); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); bb24.append(inst); inst = new Inst(Jump); bb24.append(inst); bb25.successors.push(new FrequentedBlock(bb27, Normal)); bb25.predecessors.push(bb22); inst = new Inst(Jump); bb25.append(inst); bb26.successors.push(new FrequentedBlock(bb27, Normal)); bb26.predecessors.push(bb23); inst = new Inst(Jump); bb26.append(inst); bb27.successors.push(new FrequentedBlock(bb21, Normal)); bb27.successors.push(new FrequentedBlock(bb30, Normal)); bb27.predecessors.push(bb24); bb27.predecessors.push(bb26); bb27.predecessors.push(bb25); inst = new Inst(Move32); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); bb27.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(Overflow); inst.args.push(arg); arg = Arg.createImm(1); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.UseZDef, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); bb27.append(inst); inst = new Inst(Branch32); arg = Arg.createRelCond(LessThan); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createImm(7); inst.args.push(arg); bb27.append(inst); bb28.successors.push(new FrequentedBlock(bb31, Normal)); bb28.predecessors.push(bb15); inst = new Inst(Jump); bb28.append(inst); bb29.successors.push(new FrequentedBlock(bb31, Normal)); bb29.predecessors.push(bb16); inst = new Inst(Jump); bb29.append(inst); bb30.successors.push(new FrequentedBlock(bb31, Normal)); bb30.predecessors.push(bb27); inst = new Inst(Move); arg = Arg.createStack(slot1, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); bb30.append(inst); inst = new Inst(Jump); bb30.append(inst); bb31.successors.push(new FrequentedBlock(bb14, Normal)); bb31.successors.push(new FrequentedBlock(bb32, Normal)); bb31.predecessors.push(bb30); bb31.predecessors.push(bb29); bb31.predecessors.push(bb28); inst = new Inst(Move32); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); bb31.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(Overflow); inst.args.push(arg); arg = Arg.createImm(1); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.UseZDef, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); bb31.append(inst); inst = new Inst(Branch32); arg = Arg.createRelCond(LessThan); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createImm(7); inst.args.push(arg); bb31.append(inst); bb32.successors.push(new FrequentedBlock(bb34, Normal)); bb32.successors.push(new FrequentedBlock(bb33, Rare)); bb32.predecessors.push(bb31); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(Overflow); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createImm(400); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); bb32.append(inst); inst = new Inst(BranchTest32); arg = Arg.createResCond(NonZero); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb32.append(inst); bb33.successors.push(new FrequentedBlock(bb34, Normal)); bb33.predecessors.push(bb32); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(LessThan); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createImm(0); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); bb33.append(inst); inst = new Inst(Jump); bb33.append(inst); bb34.successors.push(new FrequentedBlock(bb12, Normal)); bb34.successors.push(new FrequentedBlock(bb35, Normal)); bb34.predecessors.push(bb32); bb34.predecessors.push(bb33); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(Overflow); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); bb34.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(Overflow); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createImm(4); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); bb34.append(inst); inst = new Inst(DivDouble); arg = Arg.createTmp(Reg.xmm6); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); bb34.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(AboveOrEqual); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); bb34.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createDoubleCond(DoubleNotEqualOrUnordered); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: FP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); bb34.append(inst); inst = new Inst(MoveDouble); arg = Arg.createTmp(Reg.xmm1); inst.args.push(arg); arg = Arg.createIndex(Reg.r9, Reg.rsi, 8, 0); inst.args.push(arg); bb34.append(inst); inst = new Inst(Move32); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); bb34.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(Overflow); inst.args.push(arg); arg = Arg.createImm(1); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.UseZDef, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); bb34.append(inst); inst = new Inst(DivDouble); arg = Arg.createTmp(Reg.xmm6); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); bb34.append(inst); inst = new Inst(Add32); arg = Arg.createImm(1); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); bb34.append(inst); inst = new Inst(Add32); arg = Arg.createImm(3); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb34.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(AboveOrEqual); inst.args.push(arg); arg = Arg.createTmp(Reg.r11); inst.args.push(arg); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); bb34.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createRelCond(AboveOrEqual); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.r8); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); bb34.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createDoubleCond(DoubleNotEqualOrUnordered); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.rdi); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: FP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); bb34.append(inst); inst = new Inst(MoveDouble); arg = Arg.createTmp(Reg.xmm2); inst.args.push(arg); arg = Arg.createIndex(Reg.r9, Reg.rdi, 8, 0); inst.args.push(arg); bb34.append(inst); inst = new Inst(Add32); arg = Arg.createImm(2); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); bb34.append(inst); inst = new Inst(DivDouble); arg = Arg.createTmp(Reg.xmm6); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); bb34.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createDoubleCond(DoubleNotEqualOrUnordered); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.rsi); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: FP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); bb34.append(inst); inst = new Inst(MoveDouble); arg = Arg.createTmp(Reg.xmm3); inst.args.push(arg); arg = Arg.createIndex(Reg.r9, Reg.rsi, 8, 0); inst.args.push(arg); bb34.append(inst); inst = new Inst(DivDouble); arg = Arg.createTmp(Reg.xmm6); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); bb34.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createDoubleCond(DoubleNotEqualOrUnordered); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: FP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64}); bb34.append(inst); inst = new Inst(MoveDouble); arg = Arg.createTmp(Reg.xmm5); inst.args.push(arg); arg = Arg.createIndex(Reg.r9, Reg.rax, 8, 0); inst.args.push(arg); bb34.append(inst); inst = new Inst(Move32); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb34.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(Overflow); inst.args.push(arg); arg = Arg.createImm(1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rdx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.UseZDef, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); bb34.append(inst); inst = new Inst(Branch32); arg = Arg.createRelCond(LessThan); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createImm(400); inst.args.push(arg); bb34.append(inst); bb35.successors.push(new FrequentedBlock(bb11, Normal)); bb35.successors.push(new FrequentedBlock(bb36, Normal)); bb35.predecessors.push(bb34); inst = new Inst(Move); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb35.append(inst); inst = new Inst(Patch); arg = Arg.createSpecial(); inst.args.push(arg); arg = Arg.createResCond(Overflow); inst.args.push(arg); arg = Arg.createImm(1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createStack(slot5, 0); inst.args.push(arg); arg = Arg.createTmp(Reg.rcx); inst.args.push(arg); inst.patchHasNonArgEffects = true; inst.extraEarlyClobberedRegs = new Set(); inst.extraClobberedRegs = new Set(); inst.patchArgData = []; inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); inst.patchArgData.push({role: Arg.UseZDef, type: GP, width: 32}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64}); inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32}); bb35.append(inst); inst = new Inst(Branch32); arg = Arg.createRelCond(LessThan); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); arg = Arg.createImm(267); inst.args.push(arg); bb35.append(inst); bb36.predecessors.push(bb35); inst = new Inst(Move); arg = Arg.createBigImm(144506576, 1); inst.args.push(arg); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb36.append(inst); inst = new Inst(Ret64); arg = Arg.createTmp(Reg.rax); inst.args.push(arg); bb36.append(inst); return code; }