🏡 index : cold-air-networks/mirror-jetstream.git

"use strict";
// Generated by Air::dumpAsJS from scanIdentifier#EPcFQe in Octane/typescript
function createPayloadTypescriptScanIdentifier()
{
    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 slot0 = code.addStackSlot(56, Locked);
    let slot1 = code.addStackSlot(8, Spill);
    let slot2 = code.addStackSlot(8, Spill);
    let slot3 = code.addStackSlot(8, Spill);
    let slot4 = code.addStackSlot(8, Spill);
    let slot5 = code.addStackSlot(4, Spill);
    let slot6 = code.addStackSlot(8, Spill);
    let slot7 = code.addStackSlot(8, Spill);
    let slot8 = code.addStackSlot(8, Spill);
    let slot9 = code.addStackSlot(40, Locked);
    slot9.setOffsetFromFP(-40);
    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 inst;
    let arg;
    bb0.successors.push(new FrequentedBlock(bb5, Normal));
    bb0.successors.push(new FrequentedBlock(bb4, Normal));
    inst = new Inst(Move);
    arg = Arg.createBigImm(177329888, 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.createAddr(Reg.rbp, 40);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rbx);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createBigImm(2, -65536);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r15);
    inst.args.push(arg);
    bb0.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.rbx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r15);
    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});
    bb0.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.rbx, 5);
    inst.args.push(arg);
    arg = Arg.createImm(21);
    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: 8});
    inst.patchArgData.push({role: Arg.Use, type: GP, width: 8});
    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
    bb0.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.rbx, 0);
    inst.args.push(arg);
    arg = Arg.createImm(2540);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rbx);
    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});
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createAddr(Reg.rbx, 72);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Compare32);
    arg = Arg.createRelCond(Equal);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createImm(92);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Move32);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    arg = Arg.createStack(slot5, 0);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createBigImm(154991936, 1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb0.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.rcx, 0);
    inst.args.push(arg);
    arg = Arg.createImm(80);
    inst.args.push(arg);
    arg = Arg.createBigImm(154991936, 1);
    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.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.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});
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createBigImm(154991944, 1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createAddr(Reg.rcx, 0);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r12);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Move32);
    arg = Arg.createAddr(Reg.r12, -8);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r8);
    inst.args.push(arg);
    bb0.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.createTmp(Reg.rbx);
    inst.args.push(arg);
    arg = Arg.createStack(slot5, 0);
    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.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});
    bb0.append(inst);
    inst = new Inst(Move32);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createIndex(Reg.r12, Reg.rax, 8, 0);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createImm(10);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r13);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(MoveConditionallyTest64);
    arg = Arg.createResCond(NonZero);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createImm(-1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r13);
    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.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Xor64);
    arg = Arg.createImm(6);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createImm(-2);
    inst.args.push(arg);
    arg = Arg.createStack(slot2, 0);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createImm(-2);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdx);
    inst.args.push(arg);
    bb0.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.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.rbx);
    inst.args.push(arg);
    arg = Arg.createStack(slot5, 0);
    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: 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: 32});
    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createImm(1);
    inst.args.push(arg);
    arg = Arg.createStack(slot1, 0);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createBigImm(129987312, 1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    arg = Arg.createStack(slot4, 0);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createBigImm(108418352, 1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createBigImm(0, -65536);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r14);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(Move);
    arg = Arg.createImm(1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdx);
    inst.args.push(arg);
    bb0.append(inst);
    inst = new Inst(BranchTest64);
    arg = Arg.createResCond(NonZero);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdx);
    inst.args.push(arg);
    bb0.append(inst);
    bb1.predecessors.push(bb6);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    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});
    bb1.append(inst);
    inst = new Inst(Oops);
    bb1.append(inst);
    bb2.predecessors.push(bb23);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    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});
    bb2.append(inst);
    inst = new Inst(Oops);
    bb2.append(inst);
    bb3.predecessors.push(bb32);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    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});
    bb3.append(inst);
    inst = new Inst(Oops);
    bb3.append(inst);
    bb4.predecessors.push(bb0);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rbx);
    inst.args.push(arg);
    arg = Arg.createStack(slot5, 0);
    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.ColdUse, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
    bb4.append(inst);
    inst = new Inst(Oops);
    bb4.append(inst);
    bb5.successors.push(new FrequentedBlock(bb8, Normal));
    bb5.successors.push(new FrequentedBlock(bb6, Rare));
    bb5.predecessors.push(bb0);
    inst = new Inst(Move);
    arg = Arg.createAddr(Reg.rbx, 56);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdi);
    inst.args.push(arg);
    bb5.append(inst);
    inst = new Inst(Move);
    arg = Arg.createAddr(Reg.rbx, 8);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb5.append(inst);
    inst = new Inst(Move);
    arg = Arg.createAddr(Reg.rax, -24);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r10);
    inst.args.push(arg);
    bb5.append(inst);
    inst = new Inst(Move);
    arg = Arg.createAddr(Reg.r10, 16);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb5.append(inst);
    inst = new Inst(BranchTest64);
    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);
    bb5.append(inst);
    bb6.successors.push(new FrequentedBlock(bb1, Rare));
    bb6.successors.push(new FrequentedBlock(bb7, Normal));
    bb6.predecessors.push(bb5);
    inst = new Inst(Move32);
    arg = Arg.createImm(1);
    inst.args.push(arg);
    arg = Arg.createAddr(Reg.rbp, 36);
    inst.args.push(arg);
    bb6.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.r10);
    inst.args.push(arg);
    arg = Arg.createStack(slot8, 0);
    inst.args.push(arg);
    bb6.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.r10);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rsi);
    inst.args.push(arg);
    bb6.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r10);
    inst.args.push(arg);
    bb6.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.r8);
    inst.args.push(arg);
    arg = Arg.createStack(slot7, 0);
    inst.args.push(arg);
    bb6.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rdi);
    inst.args.push(arg);
    arg = Arg.createStack(slot6, 0);
    inst.args.push(arg);
    bb6.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rbp);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdi);
    inst.args.push(arg);
    bb6.append(inst);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r10);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdx);
    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.rsi);
    inst.args.push(arg);
    inst.patchHasNonArgEffects = true;
    inst.extraEarlyClobberedRegs = new Set();
    inst.extraClobberedRegs = new Set();
    inst.extraClobberedRegs.add(Reg.rcx);
    inst.extraClobberedRegs.add(Reg.rsi);
    inst.extraClobberedRegs.add(Reg.rdi);
    inst.extraClobberedRegs.add(Reg.r8);
    inst.extraClobberedRegs.add(Reg.r9);
    inst.extraClobberedRegs.add(Reg.r10);
    inst.extraClobberedRegs.add(Reg.r11);
    inst.extraClobberedRegs.add(Reg.xmm1);
    inst.extraClobberedRegs.add(Reg.xmm2);
    inst.extraClobberedRegs.add(Reg.xmm3);
    inst.extraClobberedRegs.add(Reg.xmm4);
    inst.extraClobberedRegs.add(Reg.xmm5);
    inst.extraClobberedRegs.add(Reg.xmm6);
    inst.extraClobberedRegs.add(Reg.xmm7);
    inst.extraClobberedRegs.add(Reg.xmm8);
    inst.extraClobberedRegs.add(Reg.xmm9);
    inst.extraClobberedRegs.add(Reg.xmm10);
    inst.extraClobberedRegs.add(Reg.xmm11);
    inst.extraClobberedRegs.add(Reg.xmm12);
    inst.extraClobberedRegs.add(Reg.xmm13);
    inst.extraClobberedRegs.add(Reg.xmm14);
    inst.extraClobberedRegs.add(Reg.xmm15);
    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.Def, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.Def, type: FP, width: 64});
    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
    bb6.append(inst);
    inst = new Inst(Move);
    arg = Arg.createStack(slot8, 0);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r10);
    inst.args.push(arg);
    bb6.append(inst);
    inst = new Inst(Move);
    arg = Arg.createStack(slot7, 0);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r8);
    inst.args.push(arg);
    bb6.append(inst);
    inst = new Inst(Move);
    arg = Arg.createStack(slot6, 0);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdi);
    inst.args.push(arg);
    bb6.append(inst);
    inst = new Inst(Move);
    arg = Arg.createBigImm(129987312, 1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb6.append(inst);
    inst = new Inst(BranchTest64);
    arg = Arg.createResCond(NonZero);
    inst.args.push(arg);
    arg = Arg.createAddr(Reg.rcx, 0);
    inst.args.push(arg);
    arg = Arg.createImm(-1);
    inst.args.push(arg);
    bb6.append(inst);
    bb7.successors.push(new FrequentedBlock(bb11, Normal));
    bb7.predecessors.push(bb6);
    inst = new Inst(Move);
    arg = Arg.createAddr(Reg.rax, 8);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb7.append(inst);
    inst = new Inst(Jump);
    bb7.append(inst);
    bb8.successors.push(new FrequentedBlock(bb11, Normal));
    bb8.predecessors.push(bb5);
    inst = new Inst(Move);
    arg = Arg.createAddr(Reg.rax, 8);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb8.append(inst);
    inst = new Inst(Jump);
    bb8.append(inst);
    bb9.successors.push(new FrequentedBlock(bb11, Normal));
    bb9.predecessors.push(bb15);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.r9);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb9.append(inst);
    inst = new Inst(Jump);
    bb9.append(inst);
    bb10.successors.push(new FrequentedBlock(bb11, Normal));
    bb10.predecessors.push(bb18);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.r9);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb10.append(inst);
    inst = new Inst(Jump);
    bb10.append(inst);
    bb11.successors.push(new FrequentedBlock(bb12, Normal));
    bb11.successors.push(new FrequentedBlock(bb16, Normal));
    bb11.predecessors.push(bb7);
    bb11.predecessors.push(bb10);
    bb11.predecessors.push(bb9);
    bb11.predecessors.push(bb8);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r9);
    inst.args.push(arg);
    bb11.append(inst);
    inst = new Inst(Move);
    arg = Arg.createAddr(Reg.rbx, 40);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb11.append(inst);
    inst = new Inst(Move32);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rsi);
    inst.args.push(arg);
    bb11.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.createTmp(Reg.rbx);
    inst.args.push(arg);
    arg = Arg.createStack(slot5, 0);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rbx);
    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.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: 64});
    inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
    bb11.append(inst);
    inst = new Inst(Move32);
    arg = Arg.createTmp(Reg.rsi);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdx);
    inst.args.push(arg);
    bb11.append(inst);
    inst = new Inst(Add64);
    arg = Arg.createTmp(Reg.rdx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r14);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r11);
    inst.args.push(arg);
    bb11.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.r11);
    inst.args.push(arg);
    arg = Arg.createAddr(Reg.rbx, 40);
    inst.args.push(arg);
    bb11.append(inst);
    inst = new Inst(Move);
    arg = Arg.createAddr(Reg.rbx, 32);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb11.append(inst);
    inst = new Inst(Move32);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb11.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.createTmp(Reg.rbx);
    inst.args.push(arg);
    arg = Arg.createStack(slot5, 0);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rbx);
    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});
    inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
    bb11.append(inst);
    inst = new Inst(Move32);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb11.append(inst);
    inst = new Inst(Add64);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r14);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb11.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createAddr(Reg.rbx, 32);
    inst.args.push(arg);
    bb11.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.createTmp(Reg.rdi);
    inst.args.push(arg);
    bb11.append(inst);
    bb12.successors.push(new FrequentedBlock(bb13, Normal));
    bb12.successors.push(new FrequentedBlock(bb14, Normal));
    bb12.predecessors.push(bb11);
    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.createAddr(Reg.r10, 12);
    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.rbx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rbx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rbx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rsi);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r10);
    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: 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});
    bb12.append(inst);
    inst = new Inst(Move);
    arg = Arg.createAddr(Reg.r10, 16);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb12.append(inst);
    inst = new Inst(BranchTest32);
    arg = Arg.createResCond(NonZero);
    inst.args.push(arg);
    arg = Arg.createAddr(Reg.rax, 16);
    inst.args.push(arg);
    arg = Arg.createImm(8);
    inst.args.push(arg);
    bb12.append(inst);
    bb13.successors.push(new FrequentedBlock(bb15, Normal));
    bb13.predecessors.push(bb12);
    inst = new Inst(Load8);
    arg = Arg.createIndex(Reg.r9, Reg.rdx, 1, 0);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb13.append(inst);
    inst = new Inst(Jump);
    bb13.append(inst);
    bb14.successors.push(new FrequentedBlock(bb15, Normal));
    bb14.predecessors.push(bb12);
    inst = new Inst(Load16);
    arg = Arg.createIndex(Reg.r9, Reg.rdx, 2, 0);
    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(bb9, Normal));
    bb15.successors.push(new FrequentedBlock(bb17, Normal));
    bb15.predecessors.push(bb14);
    bb15.predecessors.push(bb13);
    inst = new Inst(Move32);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rsi);
    inst.args.push(arg);
    bb15.append(inst);
    inst = new Inst(Move32);
    arg = Arg.createTmp(Reg.rsi);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb15.append(inst);
    inst = new Inst(Add64);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r14);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb15.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    arg = Arg.createAddr(Reg.rbx, 72);
    inst.args.push(arg);
    bb15.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.createTmp(Reg.rbx);
    inst.args.push(arg);
    arg = Arg.createStack(slot5, 0);
    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.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});
    bb15.append(inst);
    inst = new Inst(Move);
    arg = Arg.createIndex(Reg.r12, Reg.rax, 8, 0);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb15.append(inst);
    inst = new Inst(MoveConditionallyTest64);
    arg = Arg.createResCond(NonZero);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createImm(-1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r13);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdx);
    inst.args.push(arg);
    bb15.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rdx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb15.append(inst);
    inst = new Inst(Xor64);
    arg = Arg.createImm(6);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb15.append(inst);
    inst = new Inst(Move);
    arg = Arg.createImm(-2);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb15.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.rcx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdx);
    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.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: 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: 32});
    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
    bb15.append(inst);
    inst = new Inst(Move);
    arg = Arg.createImm(1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb15.append(inst);
    inst = new Inst(BranchTest64);
    arg = Arg.createResCond(NonZero);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb15.append(inst);
    bb16.predecessors.push(bb11);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    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.rbx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rbx);
    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.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});
    bb16.append(inst);
    inst = new Inst(Oops);
    bb16.append(inst);
    bb17.successors.push(new FrequentedBlock(bb18, Normal));
    bb17.successors.push(new FrequentedBlock(bb19, Normal));
    bb17.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(48);
    inst.args.push(arg);
    bb17.append(inst);
    bb18.successors.push(new FrequentedBlock(bb10, Normal));
    bb18.successors.push(new FrequentedBlock(bb19, Normal));
    bb18.predecessors.push(bb17);
    inst = new Inst(Branch32);
    arg = Arg.createRelCond(LessThanOrEqual);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rsi);
    inst.args.push(arg);
    arg = Arg.createImm(57);
    inst.args.push(arg);
    bb18.append(inst);
    bb19.successors.push(new FrequentedBlock(bb20, Normal));
    bb19.successors.push(new FrequentedBlock(bb21, Normal));
    bb19.predecessors.push(bb17);
    bb19.predecessors.push(bb18);
    inst = new Inst(Branch32);
    arg = Arg.createRelCond(GreaterThanOrEqual);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rsi);
    inst.args.push(arg);
    arg = Arg.createImm(128);
    inst.args.push(arg);
    bb19.append(inst);
    bb20.predecessors.push(bb19);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    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.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.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});
    bb20.append(inst);
    inst = new Inst(Oops);
    bb20.append(inst);
    bb21.successors.push(new FrequentedBlock(bb22, Normal));
    bb21.successors.push(new FrequentedBlock(bb23, Normal));
    bb21.predecessors.push(bb19);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rbx);
    inst.args.push(arg);
    arg = Arg.createStack(slot5, 0);
    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.ColdUse, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
    bb21.append(inst);
    inst = new Inst(Branch32);
    arg = Arg.createRelCond(Equal);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rsi);
    inst.args.push(arg);
    arg = Arg.createImm(92);
    inst.args.push(arg);
    bb21.append(inst);
    bb22.predecessors.push(bb21);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    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.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.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});
    bb22.append(inst);
    inst = new Inst(Oops);
    bb22.append(inst);
    bb23.successors.push(new FrequentedBlock(bb2, Rare));
    bb23.successors.push(new FrequentedBlock(bb24, Normal));
    bb23.predecessors.push(bb21);
    inst = new Inst(Move);
    arg = Arg.createAddr(Reg.rbx, 48);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createBigImm(155021568, 1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createCallArg(8);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Move32);
    arg = Arg.createImm(3);
    inst.args.push(arg);
    arg = Arg.createCallArg(16);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.r10);
    inst.args.push(arg);
    arg = Arg.createCallArg(24);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    arg = Arg.createCallArg(32);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.r11);
    inst.args.push(arg);
    arg = Arg.createCallArg(40);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createCallArg(8);
    inst.args.push(arg);
    arg = Arg.createCallArg(16);
    inst.args.push(arg);
    arg = Arg.createCallArg(24);
    inst.args.push(arg);
    arg = Arg.createCallArg(32);
    inst.args.push(arg);
    arg = Arg.createCallArg(40);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r15);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r14);
    inst.args.push(arg);
    inst.patchHasNonArgEffects = true;
    inst.extraEarlyClobberedRegs = new Set();
    inst.extraClobberedRegs = new Set();
    inst.extraEarlyClobberedRegs.add(Reg.r11);
    inst.extraClobberedRegs.add(Reg.rcx);
    inst.extraClobberedRegs.add(Reg.rdx);
    inst.extraClobberedRegs.add(Reg.rsi);
    inst.extraClobberedRegs.add(Reg.rdi);
    inst.extraClobberedRegs.add(Reg.r8);
    inst.extraClobberedRegs.add(Reg.r9);
    inst.extraClobberedRegs.add(Reg.r10);
    inst.extraClobberedRegs.add(Reg.r11);
    inst.extraClobberedRegs.add(Reg.xmm0);
    inst.extraClobberedRegs.add(Reg.xmm1);
    inst.extraClobberedRegs.add(Reg.xmm2);
    inst.extraClobberedRegs.add(Reg.xmm3);
    inst.extraClobberedRegs.add(Reg.xmm4);
    inst.extraClobberedRegs.add(Reg.xmm5);
    inst.extraClobberedRegs.add(Reg.xmm6);
    inst.extraClobberedRegs.add(Reg.xmm7);
    inst.extraClobberedRegs.add(Reg.xmm8);
    inst.extraClobberedRegs.add(Reg.xmm9);
    inst.extraClobberedRegs.add(Reg.xmm10);
    inst.extraClobberedRegs.add(Reg.xmm11);
    inst.extraClobberedRegs.add(Reg.xmm12);
    inst.extraClobberedRegs.add(Reg.xmm13);
    inst.extraClobberedRegs.add(Reg.xmm14);
    inst.extraClobberedRegs.add(Reg.xmm15);
    inst.patchArgData = [];
    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
    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.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.Use, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r12);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rbx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r12);
    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.ColdUse, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createBigImm(155041288, 1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb23.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);
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createAddr(Reg.rax, -1336);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r13);
    inst.args.push(arg);
    bb23.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.r13);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r15);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r13);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rbx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r12);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r13);
    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});
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createAddr(Reg.r13, 24);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.r12);
    inst.args.push(arg);
    arg = Arg.createStack(slot0, 0);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Move32);
    arg = Arg.createImm(2);
    inst.args.push(arg);
    arg = Arg.createAddr(Reg.rbp, 36);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createBigImm(108356304, 1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    arg = Arg.createStack(slot3, 0);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rsi);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.r12);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdx);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rbp);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdi);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdx);
    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.rsi);
    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.extraClobberedRegs.add(Reg.rcx);
    inst.extraClobberedRegs.add(Reg.rsi);
    inst.extraClobberedRegs.add(Reg.rdi);
    inst.extraClobberedRegs.add(Reg.r8);
    inst.extraClobberedRegs.add(Reg.r9);
    inst.extraClobberedRegs.add(Reg.r10);
    inst.extraClobberedRegs.add(Reg.r11);
    inst.extraClobberedRegs.add(Reg.xmm1);
    inst.extraClobberedRegs.add(Reg.xmm2);
    inst.extraClobberedRegs.add(Reg.xmm3);
    inst.extraClobberedRegs.add(Reg.xmm4);
    inst.extraClobberedRegs.add(Reg.xmm5);
    inst.extraClobberedRegs.add(Reg.xmm6);
    inst.extraClobberedRegs.add(Reg.xmm7);
    inst.extraClobberedRegs.add(Reg.xmm8);
    inst.extraClobberedRegs.add(Reg.xmm9);
    inst.extraClobberedRegs.add(Reg.xmm10);
    inst.extraClobberedRegs.add(Reg.xmm11);
    inst.extraClobberedRegs.add(Reg.xmm12);
    inst.extraClobberedRegs.add(Reg.xmm13);
    inst.extraClobberedRegs.add(Reg.xmm14);
    inst.extraClobberedRegs.add(Reg.xmm15);
    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.Def, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.Def, type: FP, width: 64});
    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.Use, type: GP, width: 64});
    bb23.append(inst);
    inst = new Inst(Move);
    arg = Arg.createBigImm(129987312, 1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb23.append(inst);
    inst = new Inst(BranchTest64);
    arg = Arg.createResCond(NonZero);
    inst.args.push(arg);
    arg = Arg.createAddr(Reg.rcx, 0);
    inst.args.push(arg);
    arg = Arg.createImm(-1);
    inst.args.push(arg);
    bb23.append(inst);
    bb24.successors.push(new FrequentedBlock(bb25, Normal));
    bb24.successors.push(new FrequentedBlock(bb26, Normal));
    bb24.predecessors.push(bb23);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rbx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r12);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r13);
    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.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});
    bb24.append(inst);
    inst = new Inst(BranchTest64);
    arg = Arg.createResCond(NonZero);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r15);
    inst.args.push(arg);
    bb24.append(inst);
    bb25.successors.push(new FrequentedBlock(bb27, Normal));
    bb25.successors.push(new FrequentedBlock(bb26, Normal));
    bb25.predecessors.push(bb24);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb25.append(inst);
    inst = new Inst(And64);
    arg = Arg.createImm(-9);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb25.append(inst);
    inst = new Inst(Branch64);
    arg = Arg.createRelCond(Equal);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    arg = Arg.createImm(2);
    inst.args.push(arg);
    bb25.append(inst);
    bb26.successors.push(new FrequentedBlock(bb29, Normal));
    bb26.successors.push(new FrequentedBlock(bb28, Normal));
    bb26.predecessors.push(bb24);
    bb26.predecessors.push(bb25);
    inst = new Inst(BranchTest64);
    arg = Arg.createResCond(NonZero);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r15);
    inst.args.push(arg);
    bb26.append(inst);
    bb27.successors.push(new FrequentedBlock(bb30, Normal));
    bb27.predecessors.push(bb25);
    inst = new Inst(Move);
    arg = Arg.createImm(2);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb27.append(inst);
    inst = new Inst(Jump);
    bb27.append(inst);
    bb28.successors.push(new FrequentedBlock(bb32, Normal));
    bb28.predecessors.push(bb26);
    inst = new Inst(Jump);
    bb28.append(inst);
    bb29.successors.push(new FrequentedBlock(bb30, Normal));
    bb29.predecessors.push(bb26);
    inst = new Inst(Jump);
    bb29.append(inst);
    bb30.successors.push(new FrequentedBlock(bb34, Normal));
    bb30.successors.push(new FrequentedBlock(bb31, Normal));
    bb30.predecessors.push(bb29);
    bb30.predecessors.push(bb27);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb30.append(inst);
    inst = new Inst(And64);
    arg = Arg.createImm(-9);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb30.append(inst);
    inst = new Inst(Branch64);
    arg = Arg.createRelCond(Equal);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    arg = Arg.createImm(2);
    inst.args.push(arg);
    bb30.append(inst);
    bb31.successors.push(new FrequentedBlock(bb32, Normal));
    bb31.predecessors.push(bb30);
    inst = new Inst(Jump);
    bb31.append(inst);
    bb32.successors.push(new FrequentedBlock(bb3, Rare));
    bb32.successors.push(new FrequentedBlock(bb33, Normal));
    bb32.predecessors.push(bb28);
    bb32.predecessors.push(bb31);
    inst = new Inst(Move32);
    arg = Arg.createImm(3);
    inst.args.push(arg);
    arg = Arg.createAddr(Reg.rbp, 36);
    inst.args.push(arg);
    bb32.append(inst);
    inst = new Inst(Move);
    arg = Arg.createBigImm(154991632, 1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb32.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdx);
    inst.args.push(arg);
    bb32.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rsi);
    inst.args.push(arg);
    bb32.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rbp);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdi);
    inst.args.push(arg);
    bb32.append(inst);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    inst.args.push(arg);
    arg = Arg.createBigImm(108356304, 1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rdx);
    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.rsi);
    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.extraClobberedRegs.add(Reg.rcx);
    inst.extraClobberedRegs.add(Reg.rsi);
    inst.extraClobberedRegs.add(Reg.rdi);
    inst.extraClobberedRegs.add(Reg.r8);
    inst.extraClobberedRegs.add(Reg.r9);
    inst.extraClobberedRegs.add(Reg.r10);
    inst.extraClobberedRegs.add(Reg.r11);
    inst.extraClobberedRegs.add(Reg.xmm1);
    inst.extraClobberedRegs.add(Reg.xmm2);
    inst.extraClobberedRegs.add(Reg.xmm3);
    inst.extraClobberedRegs.add(Reg.xmm4);
    inst.extraClobberedRegs.add(Reg.xmm5);
    inst.extraClobberedRegs.add(Reg.xmm6);
    inst.extraClobberedRegs.add(Reg.xmm7);
    inst.extraClobberedRegs.add(Reg.xmm8);
    inst.extraClobberedRegs.add(Reg.xmm9);
    inst.extraClobberedRegs.add(Reg.xmm10);
    inst.extraClobberedRegs.add(Reg.xmm11);
    inst.extraClobberedRegs.add(Reg.xmm12);
    inst.extraClobberedRegs.add(Reg.xmm13);
    inst.extraClobberedRegs.add(Reg.xmm14);
    inst.extraClobberedRegs.add(Reg.xmm15);
    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.Def, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.Def, type: FP, width: 64});
    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.Use, type: GP, width: 64});
    bb32.append(inst);
    inst = new Inst(Move);
    arg = Arg.createBigImm(129987312, 1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rcx);
    inst.args.push(arg);
    bb32.append(inst);
    inst = new Inst(BranchTest64);
    arg = Arg.createResCond(NonZero);
    inst.args.push(arg);
    arg = Arg.createAddr(Reg.rcx, 0);
    inst.args.push(arg);
    arg = Arg.createImm(-1);
    inst.args.push(arg);
    bb32.append(inst);
    bb33.predecessors.push(bb32);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rbx);
    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.ColdUse, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
    bb33.append(inst);
    inst = new Inst(Ret64);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb33.append(inst);
    bb34.predecessors.push(bb30);
    inst = new Inst(Move);
    arg = Arg.createBigImm(153835296, 1);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb34.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createCallArg(8);
    inst.args.push(arg);
    bb34.append(inst);
    inst = new Inst(Move32);
    arg = Arg.createImm(3);
    inst.args.push(arg);
    arg = Arg.createCallArg(16);
    inst.args.push(arg);
    bb34.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createCallArg(24);
    inst.args.push(arg);
    bb34.append(inst);
    inst = new Inst(Move);
    arg = Arg.createTmp(Reg.r12);
    inst.args.push(arg);
    arg = Arg.createCallArg(32);
    inst.args.push(arg);
    bb34.append(inst);
    inst = new Inst(Move);
    arg = Arg.createImm(6);
    inst.args.push(arg);
    arg = Arg.createCallArg(40);
    inst.args.push(arg);
    bb34.append(inst);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    arg = Arg.createCallArg(8);
    inst.args.push(arg);
    arg = Arg.createCallArg(16);
    inst.args.push(arg);
    arg = Arg.createCallArg(24);
    inst.args.push(arg);
    arg = Arg.createCallArg(32);
    inst.args.push(arg);
    arg = Arg.createCallArg(40);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r15);
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.r14);
    inst.args.push(arg);
    inst.patchHasNonArgEffects = true;
    inst.extraEarlyClobberedRegs = new Set();
    inst.extraClobberedRegs = new Set();
    inst.extraEarlyClobberedRegs.add(Reg.r11);
    inst.extraClobberedRegs.add(Reg.rcx);
    inst.extraClobberedRegs.add(Reg.rdx);
    inst.extraClobberedRegs.add(Reg.rsi);
    inst.extraClobberedRegs.add(Reg.rdi);
    inst.extraClobberedRegs.add(Reg.r8);
    inst.extraClobberedRegs.add(Reg.r9);
    inst.extraClobberedRegs.add(Reg.r10);
    inst.extraClobberedRegs.add(Reg.r11);
    inst.extraClobberedRegs.add(Reg.xmm0);
    inst.extraClobberedRegs.add(Reg.xmm1);
    inst.extraClobberedRegs.add(Reg.xmm2);
    inst.extraClobberedRegs.add(Reg.xmm3);
    inst.extraClobberedRegs.add(Reg.xmm4);
    inst.extraClobberedRegs.add(Reg.xmm5);
    inst.extraClobberedRegs.add(Reg.xmm6);
    inst.extraClobberedRegs.add(Reg.xmm7);
    inst.extraClobberedRegs.add(Reg.xmm8);
    inst.extraClobberedRegs.add(Reg.xmm9);
    inst.extraClobberedRegs.add(Reg.xmm10);
    inst.extraClobberedRegs.add(Reg.xmm11);
    inst.extraClobberedRegs.add(Reg.xmm12);
    inst.extraClobberedRegs.add(Reg.xmm13);
    inst.extraClobberedRegs.add(Reg.xmm14);
    inst.extraClobberedRegs.add(Reg.xmm15);
    inst.patchArgData = [];
    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
    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.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.Use, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
    bb34.append(inst);
    inst = new Inst(Patch);
    arg = Arg.createSpecial();
    inst.args.push(arg);
    arg = Arg.createTmp(Reg.rbx);
    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.ColdUse, type: GP, width: 64});
    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
    bb34.append(inst);
    inst = new Inst(Ret64);
    arg = Arg.createTmp(Reg.rax);
    inst.args.push(arg);
    bb34.append(inst);
    return code;
}