From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- .../payload-imaging-gaussian-blur-gaussianBlur.js | 3107 ++++++++++++++++++++ 1 file changed, 3107 insertions(+) create mode 100644 third_party/webkit/PerformanceTests/ARES-6/Air/payload-imaging-gaussian-blur-gaussianBlur.js (limited to 'third_party/webkit/PerformanceTests/ARES-6/Air/payload-imaging-gaussian-blur-gaussianBlur.js') diff --git a/third_party/webkit/PerformanceTests/ARES-6/Air/payload-imaging-gaussian-blur-gaussianBlur.js b/third_party/webkit/PerformanceTests/ARES-6/Air/payload-imaging-gaussian-blur-gaussianBlur.js new file mode 100644 index 0000000000..0f16fee65c --- /dev/null +++ b/third_party/webkit/PerformanceTests/ARES-6/Air/payload-imaging-gaussian-blur-gaussianBlur.js @@ -0,0 +1,3107 @@ +"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; +} -- cgit v1.2.3