// File: /workspace/github_cpp_makefile_star2_O1/Thilotilo[P]DoaERando/Randomizer.cpp
// Function: DoaERando::Randomizer::UpdateGeneralNames()
void Randomizer::UpdateGeneralNames()
{
    // (0C) Zhang Jao -> Zhang Jue
    myRom->WriteByte(0x32915, 0x64);
    myRom->WriteByte(0x32916, 0x34);

    // *(0F) Ma Yuan Yi -> Ma Yuanyi
    myRom->WriteByte(0x32969, 0xFF);
    myRom->WriteByte(0x32971, 0x68);
    myRom->WriteByte(0x32972, 0x38);
    myRom->WriteByte(0x32973, 0xFF);

    // *(10) Cheng Yuan Zhi -> Cheng Yuanzhi
    myRom->WriteByte(0x32988, 0xFF);
    myRom->WriteByte(0x32993, 0x69);
    myRom->WriteByte(0x32994, 0x37);
    myRom->WriteByte(0x32995, 0x38);
    myRom->WriteByte(0x32996, 0xFF);

    // (12) Guo Ji -> Guo Si
    myRom->WriteByte(0x329CA, 0x22);

    // (15) Fen Chou -> Fan Chou
    myRom->WriteByte(0x32A1B, 0x30);

    // (36) Liu Yang -> Liu Xian
    myRom->WriteByte(0x32DCE, 0x27);
    myRom->WriteByte(0x32DCF, 0x38);
    myRom->WriteByte(0x32DD0, 0x30);
    myRom->WriteByte(0x32DD1, 0x3D);

    // (3D) Mi Zhe -> Mi Zhu
    myRom->WriteByte(0x32E43, 0x64);

    // (46) Liu Kui -> Liu Gui
    myRom->WriteByte(0x32F2C, 0x16);

    // (47) Liu Zheng -> Liu Zhang
    myRom->WriteByte(0x32F4A, 0x30);

    // (5D) Tai Si Ci -> Taishi Ci
    myRom->WriteByte(0x3319A, 0xFF);
    myRom->WriteByte(0x3319E, 0x2E);
    myRom->WriteByte(0x3319F, 0x37);
    myRom->WriteByte(0x331A0, 0x38);

    // (5F) Fan Zhang -> Pan Zhang
    myRom->WriteByte(0x331D7, 0x1F);

    // (6E) Yan Xun -> Yan Jun
    myRom->WriteByte(0x33385, 0x19);

    // (78) Xu Zhu -> Xu Chu
    myRom->WriteByte(0x3349C, 0x12);

    // *(7A) Xia Hou Dun -> Xiahou Dun
    myRom->WriteByte(0x334D0, 0xFF);
    myRom->WriteByte(0x334D4, 0x37);
    myRom->WriteByte(0x334D5, 0x3E);
    myRom->WriteByte(0x334D6, 0x64);
    myRom->WriteByte(0x334D7, 0x0A);
    myRom->WriteByte(0x334D8, 0x13);
    myRom->WriteByte(0x334D9, 0x64);
    myRom->WriteByte(0x334DA, 0x3D);
    myRom->WriteByte(0x334DB, 0xFF);

    // *(7B) Xia Hou Yuan -> Xiahou Yuan
    myRom->WriteByte(0x334F0, 0xFF);
    myRom->WriteByte(0x334F4, 0x37);
    myRom->WriteByte(0x334F5, 0x3E);
    myRom->WriteByte(0x334F6, 0x64);
    myRom->WriteByte(0x334F7, 0x0A);
    myRom->WriteByte(0x334F8, 0x28);
    myRom->WriteByte(0x334F9, 0x64);
    myRom->WriteByte(0x334FA, 0x30);
    myRom->WriteByte(0x334FB, 0x3D);
    myRom->WriteByte(0x334FC, 0xFF);

    // *(84) Xia Hou Mao -> Xiahou Mao
    myRom->WriteByte(0x335F2, 0xFF);
    myRom->WriteByte(0x335F6, 0x37);
    myRom->WriteByte(0x335F7, 0x3E);
    myRom->WriteByte(0x335F8, 0x64);
    myRom->WriteByte(0x335F9, 0x0A);
    myRom->WriteByte(0x335FA, 0x1C);
    myRom->WriteByte(0x335FB, 0x30);
    myRom->WriteByte(0x335FC, 0x3E);
    myRom->WriteByte(0x335FD, 0xFF);

    // *(85) Xia Hou De -> Xiahou De
    myRom->WriteByte(0x33612, 0xFF);
    myRom->WriteByte(0x33616, 0x37);
    myRom->WriteByte(0x33617, 0x3E);
    myRom->WriteByte(0x33618, 0x64);
    myRom->WriteByte(0x33619, 0x0A);
    myRom->WriteByte(0x3361A, 0x13);
    myRom->WriteByte(0x3361B, 0x34);
    myRom->WriteByte(0x3361C, 0xFF);

    // *(86) Xia Hou Shang -> Xiahou Shang
    myRom->WriteByte(0x33631, 0xFF);
    myRom->WriteByte(0x33635, 0x37);
    myRom->WriteByte(0x33636, 0x3E);
    myRom->WriteByte(0x33637, 0x64);
    myRom->WriteByte(0x33638, 0x0A);
    myRom->WriteByte(0x33639, 0x22);
    myRom->WriteByte(0x3363A, 0x37);
    myRom->WriteByte(0x3363B, 0x30);
    myRom->WriteByte(0x3363C, 0x3D);
    myRom->WriteByte(0x3363D, 0x36);
    myRom->WriteByte(0x3363E, 0xFF);

    // *(8D) Si Ma Zhao -> Sima Zhao
    myRom->WriteByte(0x33704, 0xFF);
    myRom->WriteByte(0x33707, 0x3C);
    myRom->WriteByte(0x33708, 0x30);
    myRom->WriteByte(0x33709, 0x0A);
    myRom->WriteByte(0x3370A, 0x29);
    myRom->WriteByte(0x3370B, 0x37);
    myRom->WriteByte(0x3370C, 0x30);
    myRom->WriteByte(0x3370D, 0x3E);
    myRom->WriteByte(0x3370E, 0xFF);

    // *(AB) Liu  Chan -> Liu Shan
    myRom->WriteByte(0x33968, 0x22);
    myRom->WriteByte(0x33969, 0x37);
    myRom->WriteByte(0x3396A, 0x30);
    myRom->WriteByte(0x3396B, 0x3D);
    myRom->WriteByte(0x3396C, 0xFF);

    // *(BA) Zheng Mao -> Deng Mao
    myRom->WriteByte(0x33ABE, 0x13);
    myRom->WriteByte(0x33ABF, 0x34);
    myRom->WriteByte(0x33AC0, 0x3D);
    myRom->WriteByte(0x33AC1, 0x36);
    myRom->WriteByte(0x33AC2, 0x0A);
    myRom->WriteByte(0x33AC3, 0x1C);
    myRom->WriteByte(0x33AC4, 0x30);
    myRom->WriteByte(0x33AC5, 0x3E);
    myRom->WriteByte(0x33AC6, 0xFF);

    // (C1) Lu Guang -> Lu Kuang
    myRom->WriteByte(0x33B85, 0x1A);

    // *(C5) Xing Dao Rong -> Xing Daorong
    myRom->WriteByte(0x33BF1, 0xFF);
    myRom->WriteByte(0x33BFA, 0x2D);
    myRom->WriteByte(0x33BFB, 0x3E);
    myRom->WriteByte(0x33BFC, 0x3D);
    myRom->WriteByte(0x33BFD, 0x36);
    myRom->WriteByte(0x33BFE, 0xFF);

    // *(CD) Zhu Ge Jin -> Zhuge Jin
    myRom->WriteByte(0x33CDD, 0xFF);
    myRom->WriteByte(0x33CE1, 0x36);
    myRom->WriteByte(0x33CE2, 0x34);
    myRom->WriteByte(0x33CE3, 0x0A);
    myRom->WriteByte(0x33CE4, 0x19);
    myRom->WriteByte(0x33CE5, 0x38);
    myRom->WriteByte(0x33CE6, 0x3D);
    myRom->WriteByte(0x33CE7, 0xFF);

    // *(D5) Zhu Ge Liang -> Zhuge Liang
    myRom->WriteByte(0x33DC3, 0xFF);
    myRom->WriteByte(0x33DC7, 0x36);
    myRom->WriteByte(0x33DC8, 0x34);
    myRom->WriteByte(0x33DC9, 0x0A);
    myRom->WriteByte(0x33DCA, 0x1B);
    myRom->WriteByte(0x33DCB, 0x38);
    myRom->WriteByte(0x33DCC, 0x30);
    myRom->WriteByte(0x33DCD, 0x3D);
    myRom->WriteByte(0x33DCE, 0x36);
    myRom->WriteByte(0x33DCF, 0xFF);

    // (D6) Xu Zhe -> Xu Shu
    myRom->WriteByte(0x33DE8, 0x22);
    myRom->WriteByte(0x33DEA, 0x64);

    // Now, for situations where we need to increase the character count,
    // the easiest way is to swap memory locations for a general whose name
    // is losing a character, and whose original name has the same number of
    // characters as the increased-count name will have.  Then update the
    // pointers so that the ids of the generals don't change.

    // +(2D) Wen Hun -> Wen Chou
    // *(88) Si Ma Yi -> Sima Yi
    myRom->SwapBytes(0x32610 + 0x2D, 0x32610 + 0x88);
    myRom->SwapBytes(0x32710 + 0x2D, 0x32710 + 0x88);
    for (int i = 0; i < 20; ++i)
    {
        myRom->SwapBytes(0x33660 + i, 0x32CB7 + i);
    }
    myRom->WriteByte(0x32CCA, 0xFF);
    myRom->WriteByte(0x32CCB, 0x22);
    myRom->WriteByte(0x32CCC, 0x38);
    myRom->WriteByte(0x32CCD, 0x3C);
    myRom->WriteByte(0x32CCE, 0x30);
    myRom->WriteByte(0x32CCF, 0x0A);
    myRom->WriteByte(0x32CD0, 0x28);
    myRom->WriteByte(0x32CD1, 0x38);
    myRom->WriteByte(0x33674, 0x26);
    myRom->WriteByte(0x33675, 0x34);
    myRom->WriteByte(0x33676, 0x3D);
    myRom->WriteByte(0x33677, 0x0A);
    myRom->WriteByte(0x33678, 0x12);
    myRom->WriteByte(0x33679, 0x37);
    myRom->WriteByte(0x3367A, 0x3E);
    myRom->WriteByte(0x3367B, 0x64);

    // +(6A) Chen Pu -> Cheng Pu
    // *(B9) Yang Jin -> Gan Jin
    myRom->SwapBytes(0x32610 + 0x6A, 0x32610 + 0xB9);
    myRom->SwapBytes(0x32710 + 0x6A, 0x32710 + 0xB9);
    for (int i = 0; i < 20; ++i)
    {
        myRom->SwapBytes(0x332FE + i, 0x33A8D + i);
    }
    myRom->WriteByte(0x33AA1, 0x12);
    myRom->WriteByte(0x33AA2, 0x37);
    myRom->WriteByte(0x33AA3, 0x34);
    myRom->WriteByte(0x33AA4, 0x3D);
    myRom->WriteByte(0x33AA5, 0x36);
    myRom->WriteByte(0x33AA6, 0x0A);
    myRom->WriteByte(0x33AA7, 0x1F);
    myRom->WriteByte(0x33AA8, 0x64);
    myRom->WriteByte(0x33312, 0x16);
    myRom->WriteByte(0x33313, 0x30);
    myRom->WriteByte(0x33314, 0x3D);
    myRom->WriteByte(0x33315, 0x0A);
    myRom->WriteByte(0x33316, 0x19);
    myRom->WriteByte(0x33317, 0x38);
    myRom->WriteByte(0x33318, 0x3D);


    // +(61) Jang Qin -> Jiang Qin
    // *(8E) Si Ma Shi -> Sima Shi
    myRom->SwapBytes(0x32610 + 0x61, 0x32610 + 0x8E);
    myRom->SwapBytes(0x32710 + 0x61, 0x32710 + 0x8E);
    for (int i = 0; i < 20; ++i)
    {
        myRom->SwapBytes(0x33710 + i, 0x331FF + i);
    }
    myRom->WriteByte(0x33213, 0x22);
    myRom->WriteByte(0x33214, 0x38);
    myRom->WriteByte(0x33215, 0x3C);
    myRom->WriteByte(0x33216, 0x30);
    myRom->WriteByte(0x33217, 0x0A);
    myRom->WriteByte(0x33218, 0x22);
    myRom->WriteByte(0x33219, 0x37);
    myRom->WriteByte(0x3321A, 0x38);
    myRom->WriteByte(0x33723, 0xFF);
    myRom->WriteByte(0x33724, 0x19);
    myRom->WriteByte(0x33725, 0x38);
    myRom->WriteByte(0x33726, 0x30);
    myRom->WriteByte(0x33727, 0x3D);
    myRom->WriteByte(0x33728, 0x36);
    myRom->WriteByte(0x33729, 0x0A);
    myRom->WriteByte(0x3372A, 0x20);
    myRom->WriteByte(0x3372B, 0x38);
    myRom->WriteByte(0x3372C, 0x3D);

    // *(D2) Xun Huo -> Xun Yu
    // +(7C) Le Xin -> Yue Jin
    myRom->SwapBytes(0x32610 + 0xD2, 0x32610 + 0x7C);
    myRom->SwapBytes(0x32710 + 0xD2, 0x32710 + 0x7C);
    for (int i = 0; i < 20; ++i)
    {
        myRom->SwapBytes(0x33D5A + i, 0x334FE + i);
    }
    myRom->WriteByte(0x33512, 0x27);
    myRom->WriteByte(0x33513, 0x64);
    myRom->WriteByte(0x33514, 0x3D);
    myRom->WriteByte(0x33515, 0x0A);
    myRom->WriteByte(0x33516, 0x28);
    myRom->WriteByte(0x33517, 0x64);
    myRom->WriteByte(0x33D6E, 0x28);
    myRom->WriteByte(0x33D6F, 0x64);
    myRom->WriteByte(0x33D70, 0x34);
    myRom->WriteByte(0x33D71, 0x0A);
    myRom->WriteByte(0x33D72, 0x19);
    myRom->WriteByte(0x33D73, 0x38);
    myRom->WriteByte(0x33D74, 0x3D);

    // This is the trickiest of the bunch.  There are no names that
    // are being reduced to 5 characters, so we can't do the same type
    // of swap.  Instead, we're going to have to adjust a pointer.
    // The least invasive way to do this is to swap Zhou Yu(66) and
    // Xu Shou, and also swap Lu Su (65) and Bu Xi.  This puts Bu Xi
    // and Xu Shou next to each other.  We now need to grow Bu Xi to
    // Bu Zhi, so what we do is shift all of the general info bytes
    // for Xu Shou up by 1, giving us an extra name character for Bu Zhi.
    // Then, since Xu Shou is shortening to Xu You, the offset change
    // doesn't carry on to any additional generals.

    // *(32) Xu Shou -> Xu You
    // +(63) Bu Xi -> Bu Zhi

    // Swap Bu Xi & Lu Su (65)
    // Swap Zhou Yu(66) and Xu Shou
    myRom->SwapBytes(0x32610 + 0x63, 0x32610 + 0x65);
    myRom->SwapBytes(0x32710 + 0x63, 0x32710 + 0x65);
    myRom->SwapBytes(0x32610 + 0x32, 0x32610 + 0x66);
    myRom->SwapBytes(0x32710 + 0x32, 0x32710 + 0x66);
    for (int i = 0; i < 25; ++i)
    {
        myRom->SwapBytes(0x3326F + i, 0x33238 + i);
    }
    for (int i = 0; i < 27; ++i)
    {
        myRom->SwapBytes(0x33289 + i, 0x32D47 + i);
    }
    // Shift all of Xu You's data to the right by 1
    for (int i = 19; i >= 0; --i)
    {
        myRom->SwapBytes(0x33289 + i, 0x33289 + i + 1);
    }
    // Change the offset for Xu You
    BYTE XuYouOffset = myRom->ReadByte(0x32610 + 0x32);
    myRom->WriteByte(0x32610 + 0x32, XuYouOffset + 1);
    // Write Bu Zhi's name
    myRom->WriteByte(0x33283, 0x11);
    myRom->WriteByte(0x33284, 0x64);
    myRom->WriteByte(0x33285, 0x0A);
    myRom->WriteByte(0x33286, 0x29);
    myRom->WriteByte(0x33287, 0x37);
    myRom->WriteByte(0x33288, 0x38);
    myRom->WriteByte(0x33289, 0xFF);
    // Write Xu You's name
    myRom->WriteByte(0x3329E, 0x27);
    myRom->WriteByte(0x3329F, 0x64);
    myRom->WriteByte(0x332A0, 0x0A);
    myRom->WriteByte(0x332A1, 0x28);
    myRom->WriteByte(0x332A2, 0x3E);
    myRom->WriteByte(0x332A3, 0x64);
    myRom->WriteByte(0x332A4, 0xFF);

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rdi
movl $0x32915, %esi          # imm = 0x32915
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32916, %esi          # imm = 0x32916
movl $0x34, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32969, %esi          # imm = 0x32969
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32971, %esi          # imm = 0x32971
movl $0x68, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32972, %esi          # imm = 0x32972
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32973, %esi          # imm = 0x32973
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32988, %esi          # imm = 0x32988
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32993, %esi          # imm = 0x32993
movl $0x69, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32994, %esi          # imm = 0x32994
movl $0x37, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32995, %esi          # imm = 0x32995
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32996, %esi          # imm = 0x32996
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x329ca, %esi          # imm = 0x329CA
movl $0x22, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32a1b, %esi          # imm = 0x32A1B
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32dce, %esi          # imm = 0x32DCE
movl $0x27, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32dcf, %esi          # imm = 0x32DCF
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32dd0, %esi          # imm = 0x32DD0
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32dd1, %esi          # imm = 0x32DD1
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32e43, %esi          # imm = 0x32E43
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32f2c, %esi          # imm = 0x32F2C
movl $0x16, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32f4a, %esi          # imm = 0x32F4A
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3319a, %esi          # imm = 0x3319A
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3319e, %esi          # imm = 0x3319E
movl $0x2e, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3319f, %esi          # imm = 0x3319F
movl $0x37, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x331a0, %esi          # imm = 0x331A0
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x331d7, %esi          # imm = 0x331D7
movl $0x1f, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33385, %esi          # imm = 0x33385
movl $0x19, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3349c, %esi          # imm = 0x3349C
movl $0x12, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334d0, %esi          # imm = 0x334D0
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334d4, %esi          # imm = 0x334D4
movl $0x37, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334d5, %esi          # imm = 0x334D5
movl $0x3e, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334d6, %esi          # imm = 0x334D6
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334d7, %esi          # imm = 0x334D7
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334d8, %esi          # imm = 0x334D8
movl $0x13, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334d9, %esi          # imm = 0x334D9
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334da, %esi          # imm = 0x334DA
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334db, %esi          # imm = 0x334DB
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334f0, %esi          # imm = 0x334F0
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334f4, %esi          # imm = 0x334F4
movl $0x37, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334f5, %esi          # imm = 0x334F5
movl $0x3e, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334f6, %esi          # imm = 0x334F6
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334f7, %esi          # imm = 0x334F7
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334f8, %esi          # imm = 0x334F8
movl $0x28, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334f9, %esi          # imm = 0x334F9
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334fa, %esi          # imm = 0x334FA
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334fb, %esi          # imm = 0x334FB
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x334fc, %esi          # imm = 0x334FC
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x335f2, %esi          # imm = 0x335F2
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x335f6, %esi          # imm = 0x335F6
movl $0x37, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x335f7, %esi          # imm = 0x335F7
movl $0x3e, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x335f8, %esi          # imm = 0x335F8
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x335f9, %esi          # imm = 0x335F9
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x335fa, %esi          # imm = 0x335FA
movl $0x1c, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x335fb, %esi          # imm = 0x335FB
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x335fc, %esi          # imm = 0x335FC
movl $0x3e, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x335fd, %esi          # imm = 0x335FD
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33612, %esi          # imm = 0x33612
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33616, %esi          # imm = 0x33616
movl $0x37, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33617, %esi          # imm = 0x33617
movl $0x3e, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33618, %esi          # imm = 0x33618
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33619, %esi          # imm = 0x33619
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3361a, %esi          # imm = 0x3361A
movl $0x13, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3361b, %esi          # imm = 0x3361B
movl $0x34, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3361c, %esi          # imm = 0x3361C
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33631, %esi          # imm = 0x33631
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33635, %esi          # imm = 0x33635
movl $0x37, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33636, %esi          # imm = 0x33636
movl $0x3e, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33637, %esi          # imm = 0x33637
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33638, %esi          # imm = 0x33638
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33639, %esi          # imm = 0x33639
movl $0x22, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3363a, %esi          # imm = 0x3363A
movl $0x37, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3363b, %esi          # imm = 0x3363B
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3363c, %esi          # imm = 0x3363C
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3363d, %esi          # imm = 0x3363D
movl $0x36, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3363e, %esi          # imm = 0x3363E
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33704, %esi          # imm = 0x33704
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33707, %esi          # imm = 0x33707
movl $0x3c, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33708, %esi          # imm = 0x33708
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33709, %esi          # imm = 0x33709
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3370a, %esi          # imm = 0x3370A
movl $0x29, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3370b, %esi          # imm = 0x3370B
movl $0x37, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3370c, %esi          # imm = 0x3370C
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3370d, %esi          # imm = 0x3370D
movl $0x3e, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3370e, %esi          # imm = 0x3370E
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33968, %esi          # imm = 0x33968
movl $0x22, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33969, %esi          # imm = 0x33969
movl $0x37, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3396a, %esi          # imm = 0x3396A
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3396b, %esi          # imm = 0x3396B
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3396c, %esi          # imm = 0x3396C
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33abe, %esi          # imm = 0x33ABE
movl $0x13, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33abf, %esi          # imm = 0x33ABF
movl $0x34, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33ac0, %esi          # imm = 0x33AC0
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33ac1, %esi          # imm = 0x33AC1
movl $0x36, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33ac2, %esi          # imm = 0x33AC2
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33ac3, %esi          # imm = 0x33AC3
movl $0x1c, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33ac4, %esi          # imm = 0x33AC4
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33ac5, %esi          # imm = 0x33AC5
movl $0x3e, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33ac6, %esi          # imm = 0x33AC6
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33b85, %esi          # imm = 0x33B85
movl $0x1a, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33bf1, %esi          # imm = 0x33BF1
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33bfa, %esi          # imm = 0x33BFA
movl $0x2d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33bfb, %esi          # imm = 0x33BFB
movl $0x3e, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33bfc, %esi          # imm = 0x33BFC
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33bfd, %esi          # imm = 0x33BFD
movl $0x36, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33bfe, %esi          # imm = 0x33BFE
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33cdd, %esi          # imm = 0x33CDD
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33ce1, %esi          # imm = 0x33CE1
movl $0x36, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33ce2, %esi          # imm = 0x33CE2
movl $0x34, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33ce3, %esi          # imm = 0x33CE3
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33ce4, %esi          # imm = 0x33CE4
movl $0x19, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33ce5, %esi          # imm = 0x33CE5
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33ce6, %esi          # imm = 0x33CE6
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33ce7, %esi          # imm = 0x33CE7
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33dc3, %esi          # imm = 0x33DC3
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33dc7, %esi          # imm = 0x33DC7
movl $0x36, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33dc8, %esi          # imm = 0x33DC8
movl $0x34, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33dc9, %esi          # imm = 0x33DC9
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33dca, %esi          # imm = 0x33DCA
movl $0x1b, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33dcb, %esi          # imm = 0x33DCB
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33dcc, %esi          # imm = 0x33DCC
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33dcd, %esi          # imm = 0x33DCD
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33dce, %esi          # imm = 0x33DCE
movl $0x36, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33dcf, %esi          # imm = 0x33DCF
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33de8, %esi          # imm = 0x33DE8
movl $0x22, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33dea, %esi          # imm = 0x33DEA
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3263d, %esi          # imm = 0x3263D
movl $0x32698, %edx          # imm = 0x32698
callq 0x404a52
movq (%rbx), %rdi
movl $0x3273d, %esi          # imm = 0x3273D
movl $0x32798, %edx          # imm = 0x32798
callq 0x404a52
movl $0x32cb7, %r14d         # imm = 0x32CB7
movq (%rbx), %rdi
leal 0x9a9(%r14), %esi
movl %r14d, %edx
callq 0x404a52
incl %r14d
cmpl $0x32ccb, %r14d         # imm = 0x32CCB
jne 0x408424
movq (%rbx), %rdi
movl $0x32cca, %esi          # imm = 0x32CCA
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32ccb, %esi          # imm = 0x32CCB
movl $0x22, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32ccc, %esi          # imm = 0x32CCC
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32ccd, %esi          # imm = 0x32CCD
movl $0x3c, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32cce, %esi          # imm = 0x32CCE
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32ccf, %esi          # imm = 0x32CCF
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32cd0, %esi          # imm = 0x32CD0
movl $0x28, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32cd1, %esi          # imm = 0x32CD1
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33674, %esi          # imm = 0x33674
movl $0x26, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33675, %esi          # imm = 0x33675
movl $0x34, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33676, %esi          # imm = 0x33676
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33677, %esi          # imm = 0x33677
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33678, %esi          # imm = 0x33678
movl $0x12, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33679, %esi          # imm = 0x33679
movl $0x37, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3367a, %esi          # imm = 0x3367A
movl $0x3e, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3367b, %esi          # imm = 0x3367B
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3267a, %esi          # imm = 0x3267A
movl $0x326c9, %edx          # imm = 0x326C9
callq 0x404a52
movq (%rbx), %rdi
movl $0x3277a, %esi          # imm = 0x3277A
movl $0x327c9, %edx          # imm = 0x327C9
callq 0x404a52
movl $0x332fe, %r14d         # imm = 0x332FE
movq (%rbx), %rdi
leal 0x78f(%r14), %edx
movl %r14d, %esi
callq 0x404a52
incl %r14d
cmpl $0x33312, %r14d         # imm = 0x33312
jne 0x40858c
movq (%rbx), %rdi
movl $0x33aa1, %esi          # imm = 0x33AA1
movl $0x12, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33aa2, %esi          # imm = 0x33AA2
movl $0x37, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33aa3, %esi          # imm = 0x33AA3
movl $0x34, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33aa4, %esi          # imm = 0x33AA4
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33aa5, %esi          # imm = 0x33AA5
movl $0x36, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33aa6, %esi          # imm = 0x33AA6
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33aa7, %esi          # imm = 0x33AA7
movl $0x1f, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33aa8, %esi          # imm = 0x33AA8
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33312, %esi          # imm = 0x33312
movl $0x16, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33313, %esi          # imm = 0x33313
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33314, %esi          # imm = 0x33314
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33315, %esi          # imm = 0x33315
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33316, %esi          # imm = 0x33316
movl $0x19, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33317, %esi          # imm = 0x33317
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33318, %esi          # imm = 0x33318
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32671, %esi          # imm = 0x32671
movl $0x3269e, %edx          # imm = 0x3269E
callq 0x404a52
movq (%rbx), %rdi
movl $0x32771, %esi          # imm = 0x32771
movl $0x3279e, %edx          # imm = 0x3279E
callq 0x404a52
movl $0x331ff, %r14d         # imm = 0x331FF
movq (%rbx), %rdi
leal 0x511(%r14), %esi
movl %r14d, %edx
callq 0x404a52
incl %r14d
cmpl $0x33213, %r14d         # imm = 0x33213
jne 0x4086e2
movq (%rbx), %rdi
movl $0x33213, %esi          # imm = 0x33213
movl $0x22, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33214, %esi          # imm = 0x33214
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33215, %esi          # imm = 0x33215
movl $0x3c, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33216, %esi          # imm = 0x33216
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33217, %esi          # imm = 0x33217
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33218, %esi          # imm = 0x33218
movl $0x22, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33219, %esi          # imm = 0x33219
movl $0x37, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3321a, %esi          # imm = 0x3321A
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33723, %esi          # imm = 0x33723
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33724, %esi          # imm = 0x33724
movl $0x19, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33725, %esi          # imm = 0x33725
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33726, %esi          # imm = 0x33726
movl $0x30, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33727, %esi          # imm = 0x33727
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33728, %esi          # imm = 0x33728
movl $0x36, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33729, %esi          # imm = 0x33729
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3372a, %esi          # imm = 0x3372A
movl $0x20, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3372b, %esi          # imm = 0x3372B
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3372c, %esi          # imm = 0x3372C
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x326e2, %esi          # imm = 0x326E2
movl $0x3268c, %edx          # imm = 0x3268C
callq 0x404a52
movq (%rbx), %rdi
movl $0x327e2, %esi          # imm = 0x327E2
movl $0x3278c, %edx          # imm = 0x3278C
callq 0x404a52
movl $0x334fe, %r14d         # imm = 0x334FE
movq (%rbx), %rdi
leal 0x85c(%r14), %esi
movl %r14d, %edx
callq 0x404a52
incl %r14d
cmpl $0x33512, %r14d         # imm = 0x33512
jne 0x40886e
movq (%rbx), %rdi
movl $0x33512, %esi          # imm = 0x33512
movl $0x27, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33513, %esi          # imm = 0x33513
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33514, %esi          # imm = 0x33514
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33515, %esi          # imm = 0x33515
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33516, %esi          # imm = 0x33516
movl $0x28, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33517, %esi          # imm = 0x33517
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33d6e, %esi          # imm = 0x33D6E
movl $0x28, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33d6f, %esi          # imm = 0x33D6F
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33d70, %esi          # imm = 0x33D70
movl $0x34, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33d71, %esi          # imm = 0x33D71
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33d72, %esi          # imm = 0x33D72
movl $0x19, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33d73, %esi          # imm = 0x33D73
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33d74, %esi          # imm = 0x33D74
movl $0x3d, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x32673, %esi          # imm = 0x32673
movl $0x32675, %edx          # imm = 0x32675
callq 0x404a52
movq (%rbx), %rdi
movl $0x32773, %esi          # imm = 0x32773
movl $0x32775, %edx          # imm = 0x32775
callq 0x404a52
movq (%rbx), %rdi
movl $0x32642, %esi          # imm = 0x32642
movl $0x32676, %edx          # imm = 0x32676
callq 0x404a52
movq (%rbx), %rdi
movl $0x32742, %esi          # imm = 0x32742
movl $0x32776, %edx          # imm = 0x32776
callq 0x404a52
movl $0x33238, %r14d         # imm = 0x33238
movq (%rbx), %rdi
leal 0x37(%r14), %esi
movl %r14d, %edx
callq 0x404a52
incl %r14d
cmpl $0x33251, %r14d         # imm = 0x33251
jne 0x4089c4
movl $0x32d47, %r14d         # imm = 0x32D47
movq (%rbx), %rdi
leal 0x542(%r14), %esi
movl %r14d, %edx
callq 0x404a52
incl %r14d
cmpl $0x32d62, %r14d         # imm = 0x32D62
jne 0x4089e5
movl $0x3329c, %r14d         # imm = 0x3329C
movq (%rbx), %rdi
leal 0x1(%r14), %edx
movl %r14d, %esi
callq 0x404a52
decl %r14d
cmpl $0x33288, %r14d         # imm = 0x33288
jne 0x408a09
movq (%rbx), %rdi
movl $0x32642, %esi          # imm = 0x32642
callq 0x4049fe
movq (%rbx), %rdi
incb %al
movzbl %al, %edx
movl $0x32642, %esi          # imm = 0x32642
callq 0x404a28
movq (%rbx), %rdi
movl $0x33283, %esi          # imm = 0x33283
movl $0x11, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33284, %esi          # imm = 0x33284
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33285, %esi          # imm = 0x33285
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33286, %esi          # imm = 0x33286
movl $0x29, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33287, %esi          # imm = 0x33287
movl $0x37, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33288, %esi          # imm = 0x33288
movl $0x38, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x33289, %esi          # imm = 0x33289
movl $0xff, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3329e, %esi          # imm = 0x3329E
movl $0x27, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x3329f, %esi          # imm = 0x3329F
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x332a0, %esi          # imm = 0x332A0
movl $0xa, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x332a1, %esi          # imm = 0x332A1
movl $0x28, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x332a2, %esi          # imm = 0x332A2
movl $0x3e, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x332a3, %esi          # imm = 0x332A3
movl $0x64, %edx
callq 0x404a28
movq (%rbx), %rdi
movl $0x332a4, %esi          # imm = 0x332A4
movl $0xff, %edx
popq %rbx
popq %r14
popq %rbp
jmp 0x404a28
nop