Function at 0x509b10
Capabilities:
Authenticate hmac
Contain obfuscated stackstrings
Encrypt data using speck
Parse credit card information
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x5b0
mov ebx, edx
mov esi, ecx
mov eax, dword [ebp + 0x24]
mov ecx, dword [ebp + 0x1c]
mov dword [esp + 0x47c], ecx
mov edi, dword [ebp + 0x14]
mov ecx, dword [ebp + 0xc]
cmp eax, 0x39
je 0x50a3d9
cmp eax, 0x3a
jne 0x50a701
mov dword [esp + 0x50c], 0
mov dword [esp + 0x508], 0
mov dword [esp + 0x510], 0
mov dword [esp + 0x504], 0
mov dword [esp + 0x500], 0
mov dword [esp + 0x4fc], 0
mov dword [esp + 0x4f8], 0
mov dword [esp + 0x4f4], 0
xorpd xmm0, xmm0
movapd xmmword [esp + 0x4c0], xmm0
mov dword [esp + 0x4d4], 0
mov dword [esp + 0x4d0], 0
mov dword [esp + 0x4d9], 0
mov dword [esp + 0x4d5], 0
mov eax, dword [0x7dc5e8]
mov dword [esp + 0x4b8], eax
movsd xmm1, qword [0x7dc5e0]
movsd qword [esp + 0x4b0], xmm1
movsd xmm1, qword [0x7dc5d8]
movsd qword [esp + 0x4a8], xmm1
movapd xmmword [esp + 0x490], xmm0
mov dword [esp + 0x48c], 0
lea eax, [esp + 0x508]
mov dword [esp], eax
mov dword [esp + 8], 0xc
mov dword [esp + 4], 0
call fcn.007c51a0
mov dword [esp + 0x508], 0x2a
mov eax, dword [ebp + 0x1c]
mov dword [eax + 0x64], 0xc
cmp dword [ebp + 0x18], 0
je 0x50a7ba
xor eax, eax
test al, al
jne 0x50a7ba
xor eax, eax
jmp 0x509c77
inc eax
mov ecx, dword [ebp + 0x18]
mov esi, dword [ecx + 0x10]
mov ecx, eax
or ecx, 2
mov edx, eax
xor edx, 2
add edx, ecx
setne cl
movzx ecx, cl
cmp eax, ecx
mov byte [esp + 0x29b], cl
mov byte [esp + 0x388], cl
mov byte [esp + 0x370], cl
mov byte [esp + 0x344], cl
mov byte [esp + 0x448], cl
mov byte [esp + 0x3a0], cl
mov byte [esp + 0x2ff], cl
mov byte [esp + 0x3a8], cl
mov byte [esp + 0x306], cl
mov byte [esp + 0x42c], cl
mov byte [esp + 0x3b4], cl
mov byte [esp + 0x273], cl
mov byte [esp + 0x2db], cl
mov byte [esp + 0x428], cl
mov dword [esp + 0x43c], ecx
mov dword [esp + 0x454], ecx
mov dword [esp + 0x158], ecx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x60], ecx
mov dword [esp + 0xac], ecx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x434], ecx
mov dword [esp + 0x3bc], ecx
mov dword [esp + 0x394], ecx
mov dword [esp + 0x444], ecx
mov dword [esp + 0x2f4], ecx
mov dword [esp + 0x2ec], ecx
mov dword [esp + 0x450], ecx
mov dword [esp + 0x410], ecx
mov dword [esp + 0x18c], ecx
mov dword [esp + 0x190], ecx
mov dword [esp + 0x3cc], ecx
mov dword [esp + 0x3fc], ecx
mov dword [esp + 0x3c0], ecx
mov dword [esp + 0xb8], ecx
mov dword [esp + 0x268], ecx
mov dword [esp + 0x238], ecx
mov dword [esp + 0x188], ecx
mov dword [esp + 0x250], ecx
mov dword [esp + 0x258], ecx
mov dword [esp + 0x2dc], ecx
mov dword [esp + 0x240], ecx
mov dword [esp + 0x3e4], ecx
mov dword [esp + 0x3f4], ecx
mov dword [esp + 0x3f0], ecx
mov dword [esp + 0x3ec], ecx
mov dword [esp + 0x3f8], ecx
mov dword [esp + 0x3e8], ecx
mov dword [esp + 0xa0], ecx
mov dword [esp + 0x418], ecx
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x78], ecx
mov dword [esp + 0x274], ecx
mov dword [esp + 0x26c], ecx
mov dword [esp + 0x284], ecx
mov dword [esp + 0x1f8], ecx
mov dword [esp + 0x1f4], ecx
mov dword [esp + 0x24c], ecx
mov dword [esp + 0x2a8], ecx
mov dword [esp + 0x2a4], ecx
mov dword [esp + 0x180], ecx
mov dword [esp + 0x100], ecx
mov dword [esp + 0x22c], ecx
mov dword [esp + 0x228], ecx
mov dword [esp + 0x1dc], ecx
mov dword [esp + 0x2c4], ecx
mov dword [esp + 0x19c], ecx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x160], ecx
mov dword [esp + 0x420], ecx
mov dword [esp + 0x2cc], ecx
mov dword [esp + 0x138], ecx
mov dword [esp + 0x1f0], ecx
mov dword [esp + 0x1ec], ecx
mov dword [esp + 0x234], ecx
mov dword [esp + 0x1a0], ecx
mov dword [esp + 0x264], ecx
mov dword [esp + 0x178], ecx
mov dword [esp + 0x458], ecx
mov dword [esp + 0x74], ecx
mov dword [esp + 0x90], ecx
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x84], ecx
mov dword [esp + 0x80], ecx
mov dword [esp + 0xec], ecx
mov dword [esp + 0xb0], ecx
mov dword [esp + 0x208], ecx
mov dword [esp + 0x214], ecx
mov dword [esp + 0x260], ecx
mov dword [esp + 0x218], ecx
mov dword [esp + 0xdc], ecx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x29c], ecx
mov dword [esp + 0x120], ecx
mov dword [esp + 0x1e8], ecx
mov dword [esp + 0x1a8], ecx
mov dword [esp + 0x12c], ecx
mov dword [esp + 0x338], ecx
mov dword [esp + 0xc8], ecx
mov dword [esp + 0xa8], ecx
mov dword [esp + 0x414], ecx
mov dword [esp + 0x140], ecx
mov dword [esp + 0x1ac], ecx
mov dword [esp + 0x400], ecx
mov dword [esp + 0x41c], ecx
mov dword [esp + 0x1c8], ecx
mov dword [esp + 0x408], ecx
mov dword [esp + 0xd0], ecx
mov dword [esp + 0xcc], ecx
mov dword [esp + 0x108], ecx
mov dword [esp + 0x280], ecx
mov dword [esp + 0x27c], ecx
mov dword [esp + 0x1d4], ecx
mov dword [esp + 0x148], ecx
mov dword [esp + 0x1b0], ecx
mov dword [esp + 0x10c], ecx
mov dword [esp + 0x174], ecx
mov dword [esp + 0x170], ecx
mov dword [esp + 0x16c], ecx
mov dword [esp + 0x244], ecx
mov dword [esp + 0xfc], ecx
mov dword [esp + 0xc0], ecx
mov dword [esp + 0x144], ecx
mov dword [esp + 0xe8], ecx
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xbc], ecx
mov dword [esp + 0x21c], ecx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xe4], ecx
mov dword [esp + 0x9c], ecx
mov dword [esp + 0xf4], ecx
mov dword [esp + 0x330], ecx
mov dword [esp + 0x34c], ecx
mov dword [esp + 0xd8], ecx
mov dword [esp + 0x23c], ecx
mov dword [esp + 0x124], ecx
mov dword [esp + 0x128], ecx
mov dword [esp + 0x164], ecx
mov dword [esp + 0x224], ecx
mov dword [esp + 0x11c], ecx
mov dword [esp + 0x230], ecx
mov dword [esp + 0x25c], ecx
mov dword [esp + 0x278], ecx
mov dword [esp + 0x1d0], ecx
mov dword [esp + 0x2ac], ecx
mov dword [esp + 0x13c], ecx
mov dword [esp + 0xf8], ecx
mov dword [esp + 0x460], ecx
mov dword [esp + 0x2d4], ecx
mov dword [esp + 0x1b8], ecx
mov dword [esp + 0xd4], ecx
mov dword [esp + 0x154], ecx
mov dword [esp + 0x94], ecx
mov dword [esp + 0x294], ecx
mov dword [esp + 0x290], ecx
mov dword [esp + 0x1c0], ecx
mov dword [esp + 0x194], ecx
mov dword [esp + 0x46c], ecx
mov dword [esp + 0x478], ecx
mov dword [esp + 0x468], ecx
mov dword [esp + 0x464], ecx
mov dword [esp + 0x45c], ecx
mov dword [esp + 0x438], ecx
mov dword [esp + 0x44c], ecx
mov dword [esp + 0x424], ecx
mov dword [esp + 0x200], ecx
mov dword [esp + 0x2b0], ecx
mov dword [esp + 0x17c], ecx
mov dword [esp + 0x1a4], ecx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x1e4], ecx
mov dword [esp + 0x28c], ecx
mov dword [esp + 0x288], ecx
mov dword [esp + 0x198], ecx
mov dword [esp + 0x168], ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0x134], ecx
mov dword [esp + 0x3d4], ecx
mov dword [esp + 0x2e4], ecx
mov dword [esp + 0x110], ecx
mov dword [esp + 0x474], ecx
mov dword [esp + 0x3e0], ecx
mov dword [esp + 0x3d8], ecx
mov dword [esp + 0x2e0], ecx
mov dword [esp + 0x470], ecx
mov dword [esp + 0x114], ecx
mov dword [esp + 0x20c], ecx
mov dword [esp + 0x150], ecx
mov dword [esp + 0x118], ecx
mov dword [esp + 0x1b4], ecx
mov byte [esp + 0x3c8], cl
mov byte [esp + 0x368], cl
mov byte [esp + 0x430], cl
mov byte [esp + 0x3dc], cl
mov byte [esp + 0xb7], cl
mov byte [esp + 0x15f], cl
mov byte [esp + 0x1da], cl
mov byte [esp + 0x14f], cl
mov byte [esp + 0x1db], cl
mov byte [esp + 0xe3], cl
mov byte [esp + 0x1cf], cl
mov byte [esp + 0x1bf], cl
mov byte [esp + 0x1e3], cl
mov byte [esp + 0x187], cl
mov byte [esp + 0x348], cl
mov byte [esp + 0x360], cl
mov byte [esp + 0x2fc], cl
mov byte [esp + 0x374], cl
mov byte [esp + 0x384], cl
mov byte [esp + 0x33f], cl
mov byte [esp + 0x36c], cl
mov byte [esp + 0x380], cl
mov byte [esp + 0x3ac], cl
mov byte [esp + 0x318], cl
mov byte [esp + 0x354], cl
mov byte [esp + 0x37c], cl
mov byte [esp + 0x3d0], cl
mov byte [esp + 0x340], cl
mov byte [esp + 0x398], cl
mov byte [esp + 0xf3], cl
mov byte [esp + 0x1c7], cl
mov byte [esp + 0x1ff], cl
mov byte [esp + 0x186], cl
mov byte [esp + 0x206], cl
mov byte [esp + 0x378], cl
mov byte [esp + 0x30b], cl
mov byte [esp + 0x2f9], cl
mov byte [esp + 0x334], cl
mov byte [esp + 0x307], cl
mov byte [esp + 0x3b0], cl
mov byte [esp + 0x39c], cl
mov byte [esp + 0x3c4], cl
mov byte [esp + 0x2eb], cl
mov byte [esp + 0x364], cl
mov byte [esp + 0x3b8], cl
mov byte [esp + 0x2f2], cl
mov byte [esp + 0x2e9], cl
mov byte [esp + 0x2fb], cl
mov byte [esp + 0x2ea], cl
mov byte [esp + 0x2fd], cl
mov byte [esp + 0x3a4], cl
mov byte [esp + 0x32c], cl
mov byte [esp + 0x2fe], cl
mov byte [esp + 0x350], cl
mov byte [esp + 0x38c], cl
mov byte [esp + 0x35c], cl
mov byte [esp + 0x40c], cl
mov byte [esp + 0x107], cl
mov byte [esp + 0x207], cl
mov byte [esp + 0x24b], cl
mov byte [esp + 0x213], cl
mov byte [esp + 0x223], cl
mov byte [esp + 0x257], cl
mov byte [esp + 0x133], cl
mov byte [esp + 0x390], cl
mov byte [esp + 0x2e8], cl
mov byte [esp + 0x310], cl
mov byte [esp + 0x328], cl
mov byte [esp + 0x320], cl
mov byte [esp + 0x2f3], cl
mov byte [esp + 0x308], cl
mov byte [esp + 0x324], cl
mov byte [esp + 0x30a], cl
mov byte [esp + 0x31c], cl
mov byte [esp + 0x30c], cl
mov byte [esp + 0x358], cl
mov byte [esp + 0x2fa], cl
mov byte [esp + 0x309], cl
mov dword [esp + 0x314], ecx
jb 0x509c70
jmp 0x50eebd
mov dword [esp + 0x55c], edi
mov dword [esp + 0x558], ecx
mov dword [esp + 0x554], ebx
mov dword [esp + 0x54c], 0
mov dword [esp + 0x548], 0
mov dword [esp + 0x550], 0
mov dword [esp + 0x544], 0
lea eax, [esp + 0x548]
mov dword [esp], eax
mov dword [esp + 8], 0xc
mov dword [esp + 4], 0
call fcn.007c51a0
mov dword [esp + 0x548], 0x2d
mov eax, edi
imul eax, eax
and eax, 3
cmp eax, 2
sete al
movzx eax, al
cmp edi, eax
jne 0x50af42
mov edi, 0x13
lea eax, [esp + 0x554]
mov dword [esp + 0x314], eax
mov eax, dword [esp + 0x54c]
mov ecx, dword [esp + 0x550]
mov dword [esp + 0x374], ecx
lea ecx, [ecx + ecx*2]
lea ecx, [ecx*8 + 0x18]
lea esi, [esp + 0x54c]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00492a60
test eax, eax
jne 0x50c055
mov edx, eax
or edx, 2
mov dword [esp + 0x34c], eax
mov ecx, eax
xor ecx, 2
add ecx, edx
je 0x50c05c
mov ebx, 9
mov dword [esp + 0x444], 0x70000003
mov dword [esp + 0x3e8], eax
mov dword [esp + 0x328], eax
mov dword [esp + 0x40c], eax
mov dword [esp + 0x400], eax
mov byte [esp + 0x33f], al
mov byte [esp + 0x338], al
mov dword [esp + 0x3e4], eax
mov dword [esp + 0x3d4], eax
mov dword [esp + 0x410], eax
mov dword [esp + 0x348], eax
mov dword [esp + 0x390], eax
mov dword [esp + 0x364], eax
mov dword [esp + 0x370], eax
mov dword [esp + 0x360], eax
mov dword [esp + 0x334], eax
mov dword [esp + 0x330], eax
mov dword [esp + 0x3a4], eax
mov dword [esp + 0x32c], eax
mov dword [esp + 0x37c], eax
mov dword [esp + 0x3fc], eax
mov dword [esp + 0x344], eax
mov dword [esp + 0x408], eax
mov dword [esp + 0x418], eax
mov dword [esp + 0x340], eax
mov dword [esp + 0x324], eax
mov dword [esp + 0x320], eax
mov dword [esp + 0x36c], eax
mov dword [esp + 0x46c], eax
mov dword [esp + 0x3ec], eax
mov dword [esp + 0x380], eax
mov dword [esp + 0x3dc], eax
mov dword [esp + 0x468], eax
mov dword [esp + 0x3d0], eax
mov dword [esp + 0x3c8], eax
mov dword [esp + 0x3cc], eax
mov dword [esp + 0x3c4], eax
mov dword [esp + 0x450], eax
mov dword [esp + 0x440], eax
mov dword [esp + 0x43c], eax
mov dword [esp + 0x458], eax
mov dword [esp + 0x438], eax
mov dword [esp + 0x460], eax
mov dword [esp + 0x45c], eax
mov dword [esp + 0x3b0], eax
mov dword [esp + 0x3ac], eax
mov dword [esp + 0x3a8], eax
mov dword [esp + 0x3f0], eax
mov dword [esp + 0x3f8], eax
mov dword [esp + 0x358], eax
mov dword [esp + 0x318], eax
mov dword [esp + 0x38c], eax
mov dword [esp + 0x384], eax
mov dword [esp + 0x378], eax
mov dword [esp + 0x31c], eax
mov dword [esp + 0x35c], eax
mov dword [esp + 0x434], eax
mov dword [esp + 0x398], eax
mov dword [esp + 0x42c], eax
mov dword [esp + 0x44c], eax
mov dword [esp + 0x448], eax
mov dword [esp + 0x430], eax
mov dword [esp + 0x404], eax
mov dword [esp + 0x414], eax
mov dword [esp + 0x428], eax
mov dword [esp + 0x3c0], eax
mov dword [esp + 0x3b4], eax
mov dword [esp + 0x3e0], eax
mov dword [esp + 0x3d8], eax
mov dword [esp + 0x388], eax
mov dword [esp + 0x354], eax
mov dword [esp + 0x368], eax
mov dword [esp + 0x394], eax
mov dword [esp + 0x350], eax
mov dword [esp + 0x3f4], eax
lea eax, [esp + 0x550]
mov dword [esp + 0x3a0], eax
mov dword [esp + 0x39c], esi
mov dword [esp + 0x3b8], esi
mov dword [esp + 0x474], esi
jmp 0x50e498
mov eax, dword [esi + 4]
mov edi, dword [esi + 8]
lea ecx, [edi + edi*2]
mov dword [esp + 0x47c], ecx
lea ecx, [ecx*8 + 0x18]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00492a60
mov edx, 0x70000003
test eax, eax
jne 0x50a73c
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
jne 0x50c29a
mov dword [esi + 4], eax
mov ecx, dword [esi + 8]
mov edx, ecx
and edx, 1
xor edx, ecx
cmp edx, 0xffffffff
setne dl
movzx edx, dl
add edx, ecx
mov dword [esi + 8], edx
shl edi, 3
lea ecx, [edi + edi*2]
mov dword [eax + ecx], ebx
mov eax, dword [esi + 4]
mov edx, dword [ebp + 0xc]
mov dword [eax + ecx + 4], edx
mov al, byte [ebp + 8]
mov edx, dword [esi + 4]
mov byte [edx + ecx + 8], al
mov eax, dword [esi + 4]
mov dword [eax + ecx + 0xc], 0
mov eax, dword [esi + 4]
mov edx, dword [ebp + 0x14]
mov dword [eax + ecx + 0x10], edx
mov eax, dword [esi + 4]
mov dword [eax + ecx + 0x14], 0
mov edi, 0xd
mov dword [esp], edx
call fcn.00492770
mov ebx, eax
test ebx, ebx
je 0x50c2dc
xor eax, eax
test al, al
je 0x50c2bf
jmp 0x50c2dc
mov eax, 0x56bbc03d
add al, 0x19
movzx eax, al
cmp eax, 0x56
je 0x50a7d2
cmp eax, 0x7c
jne 0x50b173
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x9c]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
mov dword [esp + 0x50], 0
cmp eax, ecx
jne 0x50b90b
mov byte [esp + 0x29b], al
mov byte [esp + 0x388], al
mov byte [esp + 0x370], al
mov byte [esp + 0x3a8], al
mov byte [esp + 0x306], al
mov byte [esp + 0x3b4], al
mov byte [esp + 0x398], al
mov byte [esp + 0x448], al
mov byte [esp + 0x42c], al
mov byte [esp + 0xb7], al
mov byte [esp + 0x390], al
mov byte [esp + 0x348], al
mov byte [esp + 0x2fc], al
mov byte [esp + 0x344], al
mov dword [esp + 0x58], 0x700002bb
mov dword [esp + 0x434], eax
mov dword [esp + 0x3bc], eax
mov dword [esp + 0x394], eax
mov dword [esp + 0x444], eax
mov dword [esp + 0x2f4], eax
mov dword [esp + 0x2ec], eax
mov dword [esp + 0x190], eax
mov dword [esp + 0x10c], eax
mov dword [esp + 0x160], eax
mov dword [esp + 0xd4], eax
mov dword [esp + 0x21c], eax
mov dword [esp + 0x19c], eax
mov dword [esp + 0xe4], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x43c], eax
mov dword [esp + 0x454], eax
mov dword [esp + 0x408], eax
mov dword [esp + 0xd0], eax
mov dword [esp + 0xcc], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0xac], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x3e4], eax
mov dword [esp + 0x3f4], eax
mov dword [esp + 0x3f0], eax
mov dword [esp + 0x3ec], eax
mov dword [esp + 0x3f8], eax
mov dword [esp + 0x3e8], eax
mov dword [esp + 0x418], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x1f8], eax
mov dword [esp + 0x1f4], eax
mov dword [esp + 0x24c], eax
mov dword [esp + 0x180], eax
mov dword [esp + 0x100], eax
mov dword [esp + 0x228], eax
mov dword [esp + 0x1dc], eax
mov dword [esp + 0x2c4], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x420], eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0x450], eax
mov dword [esp + 0x410], eax
mov dword [esp + 0x414], eax
mov dword [esp + 0x140], eax
mov dword [esp + 0x18c], eax
mov dword [esp + 0x1ac], eax
mov dword [esp + 0x1d4], eax
mov dword [esp + 0x148], eax
mov dword [esp + 0x1b0], eax
mov dword [esp + 0x3cc], eax
mov dword [esp + 0x3fc], eax
mov dword [esp + 0x3c0], eax
mov dword [esp + 0xc0], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x1e4], eax
mov dword [esp + 0x28c], eax
mov dword [esp + 0x288], eax
mov dword [esp + 0x198], eax
mov dword [esp + 0x168], eax
mov dword [esp + 0x144], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x134], eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0xa4], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xf4], eax
mov dword [esp + 0x3d4], eax
mov dword [esp + 0x2e4], eax
mov dword [esp + 0x110], eax
mov dword [esp + 0x330], eax
mov dword [esp + 0x34c], eax
mov dword [esp + 0xd8], eax
mov dword [esp + 0x23c], eax
mov dword [esp + 0x124], eax
mov dword [esp + 0x250], eax
mov dword [esp + 0x258], eax
mov dword [esp + 0x278], eax
mov dword [esp + 0x1d0], eax
mov dword [esp + 0x13c], eax
mov dword [esp + 0x2dc], eax
mov dword [esp + 0x20c], eax
mov dword [esp + 0x1b8], eax
mov dword [esp + 0x150], eax
mov dword [esp + 0x118], eax
mov dword [esp + 0x1b4], eax
mov dword [esp + 0x114], eax
mov dword [esp + 0x11c], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x208], eax
mov dword [esp + 0x214], eax
mov dword [esp + 0x260], eax
mov dword [esp + 0x218], eax
mov dword [esp + 0xdc], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x29c], eax
mov dword [esp + 0x400], eax
mov dword [esp + 0x108], eax
mov dword [esp + 0x158], eax
mov dword [esp + 0x1f0], eax
mov dword [esp + 0x1ec], eax
mov dword [esp + 0x234], eax
mov dword [esp + 0x1a0], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0x268], eax
mov dword [esp + 0x238], eax
mov dword [esp + 0x164], eax
mov dword [esp + 0x224], eax
mov dword [esp + 0x188], eax
mov dword [esp + 0x194], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0x45c], eax
mov dword [esp + 0x154], eax
mov dword [esp + 0x274], eax
mov dword [esp + 0x26c], eax
mov dword [esp + 0x284], eax
mov dword [esp + 0x41c], eax
mov dword [esp + 0x1c8], eax
mov dword [esp + 0x230], eax
mov dword [esp + 0x25c], eax
mov dword [esp + 0xec], eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0x46c], eax
mov dword [esp + 0x478], eax
mov dword [esp + 0x468], eax
mov dword [esp + 0x464], eax
mov dword [esp + 0x2a8], eax
mov dword [esp + 0x2a4], eax
mov dword [esp + 0x22c], eax
mov dword [esp + 0x2cc], eax
mov dword [esp + 0x138], eax
mov dword [esp + 0x438], eax
mov dword [esp + 0x44c], eax
mov dword [esp + 0x424], eax
mov dword [esp + 0x338], eax
mov dword [esp + 0x200], eax
mov dword [esp + 0x2b0], eax
mov dword [esp + 0x17c], eax
mov dword [esp + 0x1a4], eax
mov dword [esp + 0x280], eax
mov dword [esp + 0x27c], eax
mov dword [esp + 0x174], eax
mov dword [esp + 0x170], eax
mov dword [esp + 0x16c], eax
mov dword [esp + 0x244], eax
mov dword [esp + 0xfc], eax
mov dword [esp + 0x474], eax
mov dword [esp + 0x3e0], eax
mov dword [esp + 0x3d8], eax
mov dword [esp + 0x2e0], eax
mov dword [esp + 0x470], eax
mov dword [esp + 0x2ac], eax
mov dword [esp + 0xf8], eax
mov dword [esp + 0x460], eax
mov dword [esp + 0x2d4], eax
mov dword [esp + 0x294], eax
mov dword [esp + 0x290], eax
mov dword [esp + 0x240], eax
mov dword [esp + 0x120], eax
mov dword [esp + 0x1e8], eax
mov dword [esp + 0x1a8], eax
mov dword [esp + 0x12c], eax
mov dword [esp + 0x264], eax
mov dword [esp + 0x178], eax
mov dword [esp + 0x458], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x300], eax
mov byte [esp + 0x3a0], al
mov byte [esp + 0x374], al
mov byte [esp + 0x384], al
mov byte [esp + 0x2ff], al
mov byte [esp + 0x33f], al
mov byte [esp + 0x3d0], al
mov byte [esp + 0x340], al
mov byte [esp + 0x1c7], al
mov byte [esp + 0x186], al
mov byte [esp + 0x206], al
mov byte [esp + 0x2e8], al
mov byte [esp + 0x310], al
mov byte [esp + 0x328], al
mov byte [esp + 0x273], al
mov byte [esp + 0x320], al
mov byte [esp + 0x378], al
mov byte [esp + 0x30b], al
mov byte [esp + 0x2f3], al
mov byte [esp + 0x308], al
mov byte [esp + 0x307], al
mov byte [esp + 0x3b0], al
mov byte [esp + 0x39c], al
mov byte [esp + 0x3c4], al
mov byte [esp + 0x324], al
mov byte [esp + 0x30a], al
mov byte [esp + 0x2eb], al
mov byte [esp + 0x2db], al
mov byte [esp + 0x31c], al
mov byte [esp + 0x3b8], al
mov byte [esp + 0x30c], al
mov byte [esp + 0x2f2], al
mov byte [esp + 0x2e9], al
mov byte [esp + 0x2fb], al
mov byte [esp + 0x358], al
mov byte [esp + 0x2ea], al
mov byte [esp + 0x2fd], al
mov byte [esp + 0x2fa], al
mov byte [esp + 0x3a4], al
mov byte [esp + 0x32c], al
mov byte [esp + 0x428], al
mov byte [esp + 0x3c8], al
mov byte [esp + 0x368], al
mov byte [esp + 0x309], al
mov byte [esp + 0x2fe], al
mov byte [esp + 0x350], al
mov byte [esp + 0x38c], al
mov byte [esp + 0x35c], al
mov byte [esp + 0x430], al
mov byte [esp + 0x1cf], al
mov byte [esp + 0x1bf], al
mov byte [esp + 0x2f9], al
mov byte [esp + 0x133], al
mov byte [esp + 0x36c], al
mov byte [esp + 0x318], al
mov byte [esp + 0x354], al
mov byte [esp + 0x1e3], al
mov byte [esp + 0x334], al
mov byte [esp + 0x207], al
mov byte [esp + 0x213], al
mov byte [esp + 0x223], al
mov byte [esp + 0x3dc], al
mov byte [esp + 0x257], al
mov byte [esp + 0x364], al
mov byte [esp + 0x380], al
mov byte [esp + 0x3ac], al
mov byte [esp + 0x1da], al
mov byte [esp + 0x187], al
mov byte [esp + 0x360], al
mov byte [esp + 0x37c], al
mov byte [esp + 0xf3], al
mov byte [esp + 0x1ff], al
mov byte [esp + 0x40c], al
mov byte [esp + 0x107], al
mov byte [esp + 0x1db], al
mov byte [esp + 0xe3], al
mov byte [esp + 0x14f], al
mov byte [esp + 0x15f], al
mov dword [esp + 0x314], eax
jmp 0x516c0a
mov eax, 0x56bbc03d
add eax, 0xa9443fca
mov dword [esp + 0x478], eax
mov dword [esp + 0x40c], eax
mov dword [esp + 0x400], eax
mov dword [esp + 0x3f8], eax
mov dword [esp + 0x370], eax
mov dword [esp + 0x344], eax
mov dword [esp + 0x408], eax
mov byte [esp + 0x33f], al
mov byte [esp + 0x338], al
mov dword [esp + 0x418], eax
mov dword [esp + 0x340], eax
mov dword [esp + 0x324], eax
mov dword [esp + 0x36c], eax
mov dword [esp + 0x3e8], eax
mov dword [esp + 0x3d8], eax
mov dword [esp + 0x3c8], eax
mov dword [esp + 0x3cc], eax
mov dword [esp + 0x328], eax
mov dword [esp + 0x3c4], eax
mov dword [esp + 0x450], eax
mov dword [esp + 0x440], eax
mov dword [esp + 0x43c], eax
mov dword [esp + 0x420], eax
mov dword [esp + 0x438], eax
mov dword [esp + 0x41c], eax
mov dword [esp + 0x424], eax
mov dword [esp + 0x3b0], eax
mov dword [esp + 0x3ac], eax
mov dword [esp + 0x3a8], eax
mov dword [esp + 0x3f0], eax
mov dword [esp + 0x314], eax
mov dword [esp + 0x3a0], eax
mov dword [esp + 0x374], eax
mov dword [esp + 0x39c], eax
mov dword [esp + 0x3b8], eax
mov dword [esp + 0x34c], eax
mov dword [esp + 0x348], eax
mov dword [esp + 0x390], eax
mov dword [esp + 0x364], eax
mov dword [esp + 0x360], eax
mov dword [esp + 0x334], eax
mov dword [esp + 0x330], eax
mov dword [esp + 0x3a4], eax
mov dword [esp + 0x32c], eax
mov dword [esp + 0x37c], eax
mov dword [esp + 0x3fc], eax
mov dword [esp + 0x358], eax
mov dword [esp + 0x318], eax
mov dword [esp + 0x38c], eax
mov dword [esp + 0x384], eax
mov dword [esp + 0x320], eax
mov dword [esp + 0x378], eax
mov dword [esp + 0x31c], eax
mov dword [esp + 0x35c], eax
mov dword [esp + 0x388], eax
mov dword [esp + 0x354], eax
mov dword [esp + 0x368], eax
mov dword [esp + 0x394], eax
mov dword [esp + 0x434], eax
mov dword [esp + 0x398], eax
mov dword [esp + 0x350], eax
mov dword [esp + 0x3f4], eax
mov dword [esp + 0x3dc], eax
mov dword [esp + 0x464], eax
mov dword [esp + 0x468], eax
mov dword [esp + 0x42c], eax
mov dword [esp + 0x430], eax
mov dword [esp + 0x404], eax
mov dword [esp + 0x428], eax
mov dword [esp + 0x3c0], eax
mov dword [esp + 0x3b4], eax
mov dword [esp + 0x3e4], eax
mov dword [esp + 0x3d4], eax
mov dword [esp + 0x454], ecx
mov dword [esp + 0x46c], ecx
mov dword [esp + 0x3ec], ecx
mov dword [esp + 0x380], ecx
mov dword [esp + 0x3e0], ecx
jmp 0x50eadf
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x9c]
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
mov dword [esp + 0x50], 0
cmp eax, ecx
mov byte [esp + 0x29b], al
mov byte [esp + 0x388], al
mov byte [esp + 0x3b4], al
mov byte [esp + 0x1da], al
mov byte [esp + 0x390], al
mov byte [esp + 0x348], al
mov byte [esp + 0x370], al
mov byte [esp + 0x3d0], al
mov byte [esp + 0x340], al
mov byte [esp + 0x398], al
mov byte [esp + 0x206], al
mov byte [esp + 0x273], al
mov byte [esp + 0x378], al
mov byte [esp + 0x30b], al
mov ecx, 0x16
mov eax, 3
mov dword [esp + 0x58], 0x700002bb
mov dword [esp + 0x68], edx
mov dword [esp + 0x60], edx
mov dword [esp + 0xac], edx
mov dword [esp + 0x64], edx
mov dword [esp + 0x434], edx
mov dword [esp + 0x3bc], edx
mov dword [esp + 0x394], edx
mov dword [esp + 0x444], edx
mov dword [esp + 0x2f4], edx
mov dword [esp + 0x2ec], edx
mov dword [esp + 0x3e4], edx
mov dword [esp + 0x3f4], edx
mov dword [esp + 0x3f0], edx
mov dword [esp + 0x3ec], edx
mov dword [esp + 0x3f8], edx
mov dword [esp + 0x3e8], edx
mov dword [esp + 0x7c], edx
mov dword [esp + 0x78], edx
mov dword [esp + 0x1f8], edx
mov dword [esp + 0x1f4], edx
mov dword [esp + 0x24c], edx
mov dword [esp + 0x228], edx
mov dword [esp + 0x1dc], edx
mov dword [esp + 0x2c4], edx
mov dword [esp + 0x19c], edx
mov dword [esp + 0x88], edx
mov dword [esp + 0x1f0], edx
mov dword [esp + 0x1ec], edx
mov dword [esp + 0x234], edx
mov dword [esp + 0x1a0], edx
mov dword [esp + 0x74], edx
mov dword [esp + 0x90], edx
mov dword [esp + 0x8c], edx
mov dword [esp + 0x84], edx
mov dword [esp + 0x80], edx
mov dword [esp + 0xec], edx
mov dword [esp + 0xb0], edx
mov dword [esp + 0xc8], edx
mov dword [esp + 0x1d4], edx
mov dword [esp + 0x148], edx
mov dword [esp + 0x1b0], edx
mov dword [esp + 0x10c], edx
mov dword [esp + 0x3cc], edx
mov dword [esp + 0x3fc], edx
mov dword [esp + 0x3c0], edx
mov dword [esp + 0xc0], edx
mov dword [esp + 0x144], edx
mov dword [esp + 0xbc], edx
mov dword [esp + 0xa4], edx
mov dword [esp + 0xe4], edx
mov dword [esp + 0x164], edx
mov dword [esp + 0x224], edx
mov dword [esp + 0x188], edx
mov dword [esp + 0x11c], edx
mov dword [esp + 0x278], edx
mov dword [esp + 0x1d0], edx
mov dword [esp + 0x1b8], edx
mov dword [esp + 0xd4], edx
mov dword [esp + 0x94], edx
mov dword [esp + 0x194], edx
mov dword [esp + 0x240], edx
mov dword [esp + 0x2a8], edx
mov dword [esp + 0x2a4], edx
mov dword [esp + 0x180], edx
mov dword [esp + 0x100], edx
mov dword [esp + 0x160], edx
mov dword [esp + 0x420], edx
mov dword [esp + 0x2cc], edx
mov dword [esp + 0x138], edx
mov dword [esp + 0x158], edx
mov dword [esp + 0x438], edx
mov dword [esp + 0x4c], edx
mov dword [esp + 0x300], edx
mov dword [esp + 0x264], edx
mov dword [esp + 0x178], edx
mov dword [esp + 0x458], edx
mov dword [esp + 0x208], edx
mov dword [esp + 0x214], edx
mov dword [esp + 0x260], edx
mov dword [esp + 0x218], edx
mov dword [esp + 0xdc], edx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x29c], edx
mov dword [esp + 0x120], edx
mov dword [esp + 0x1e8], edx
mov dword [esp + 0x1a8], edx
mov dword [esp + 0x12c], edx
mov dword [esp + 0x338], edx
mov dword [esp + 0x200], edx
mov dword [esp + 0x2b0], edx
mov dword [esp + 0x17c], edx
mov dword [esp + 0x1a4], edx
mov dword [esp + 0x450], edx
mov dword [esp + 0x410], edx
mov dword [esp + 0x18c], edx
mov dword [esp + 0x190], edx
mov dword [esp + 0x108], edx
mov dword [esp + 0x280], edx
mov dword [esp + 0x27c], edx
mov dword [esp + 0x174], edx
mov dword [esp + 0x170], edx
mov dword [esp + 0x16c], edx
mov dword [esp + 0x244], edx
mov dword [esp + 0xfc], edx
mov dword [esp + 0x70], edx
mov dword [esp + 0x1e4], edx
mov dword [esp + 0x28c], edx
mov dword [esp + 0x288], edx
mov dword [esp + 0x198], edx
mov dword [esp + 0x168], edx
mov dword [esp + 0x98], edx
mov dword [esp + 0x134], edx
mov dword [esp + 0xe8], edx
mov dword [esp + 0xc4], edx
mov dword [esp + 0x21c], edx
mov dword [esp + 0x9c], edx
mov dword [esp + 0xf4], edx
mov dword [esp + 0x3d4], edx
mov dword [esp + 0x2e4], edx
mov dword [esp + 0x110], edx
mov dword [esp + 0x330], edx
mov dword [esp + 0x34c], edx
mov dword [esp + 0xd8], edx
mov dword [esp + 0x23c], edx
mov dword [esp + 0x124], edx
mov dword [esp + 0xb8], edx
mov dword [esp + 0x268], edx
mov dword [esp + 0x238], edx
mov dword [esp + 0x128], edx
mov dword [esp + 0x440], edx
mov dword [esp + 0x474], edx
mov dword [esp + 0x3e0], edx
mov dword [esp + 0x3d8], edx
mov dword [esp + 0x2e0], edx
mov dword [esp + 0x470], edx
mov dword [esp + 0x250], edx
mov dword [esp + 0x258], edx
mov dword [esp + 0x2ac], edx
mov dword [esp + 0x13c], edx
mov dword [esp + 0x2dc], edx
mov dword [esp + 0xf8], edx
mov dword [esp + 0x460], edx
mov dword [esp + 0x2d4], edx
mov dword [esp + 0x20c], edx
mov dword [esp + 0x154], edx
mov dword [esp + 0x150], edx
mov dword [esp + 0x1b4], edx
mov dword [esp + 0x294], edx
mov dword [esp + 0x290], edx
mov dword [esp + 0x1c0], edx
mov dword [esp + 0xa0], edx
mov dword [esp + 0x418], edx
mov dword [esp + 0x43c], edx
mov dword [esp + 0x454], edx
mov dword [esp + 0x46c], edx
mov dword [esp + 0x478], edx
mov dword [esp + 0x468], edx
mov dword [esp + 0x464], edx
mov dword [esp + 0x22c], edx
mov dword [esp + 0x45c], edx
mov dword [esp + 0x44c], edx
mov dword [esp + 0x424], edx
mov dword [esp + 0xa8], edx
mov dword [esp + 0x414], edx
mov dword [esp + 0x140], edx
mov dword [esp + 0x1ac], edx
mov dword [esp + 0x400], edx
mov dword [esp + 0x408], edx
mov dword [esp + 0xd0], edx
mov dword [esp + 0xcc], edx
mov dword [esp + 0x114], edx
mov dword [esp + 0x118], edx
mov dword [esp + 0x284], edx
mov dword [esp + 0x41c], edx
mov dword [esp + 0x1c8], edx
mov dword [esp + 0x230], edx
mov dword [esp + 0x25c], edx
mov dword [esp + 0x26c], edx
mov dword [esp + 0x274], edx
mov esi, 0
mov byte [esp + 0x307], dl
mov byte [esp + 0x3b0], dl
mov byte [esp + 0x39c], dl
mov byte [esp + 0x3c4], dl
mov byte [esp + 0x2eb], dl
mov byte [esp + 0x2db], dl
mov byte [esp + 0x3b8], dl
mov byte [esp + 0x2f2], dl
mov byte [esp + 0x2e9], dl
mov byte [esp + 0x2ea], dl
mov byte [esp + 0x3c8], dl
mov byte [esp + 0x368], dl
mov byte [esp + 0x309], dl
mov byte [esp + 0x430], dl
mov byte [esp + 0x207], dl
mov byte [esp + 0x213], dl
mov byte [esp + 0x223], dl
mov byte [esp + 0x3dc], dl
mov byte [esp + 0x257], dl
mov byte [esp + 0x133], dl
mov byte [esp + 0xb7], dl
mov byte [esp + 0x15f], dl
mov byte [esp + 0x14f], dl
mov byte [esp + 0x1db], dl
mov byte [esp + 0xe3], dl
mov byte [esp + 0x1cf], dl
mov byte [esp + 0x1bf], dl
mov byte [esp + 0x1e3], dl
mov byte [esp + 0x187], dl
mov byte [esp + 0x360], dl
mov byte [esp + 0x2fc], dl
mov byte [esp + 0x344], dl
mov byte [esp + 0x3a0], dl
mov byte [esp + 0x374], dl
mov byte [esp + 0x384], dl
mov byte [esp + 0x2ff], dl
mov byte [esp + 0x3a8], dl
mov byte [esp + 0x306], dl
mov byte [esp + 0x318], dl
mov byte [esp + 0x354], dl
mov byte [esp + 0x37c], dl
mov byte [esp + 0x186], dl
mov byte [esp + 0x2e8], dl
mov byte [esp + 0x310], dl
mov byte [esp + 0x328], dl
mov byte [esp + 0x320], dl
mov byte [esp + 0x2f3], dl
mov byte [esp + 0x308], dl
mov byte [esp + 0x2f9], dl
mov byte [esp + 0x334], dl
mov byte [esp + 0x324], dl
mov byte [esp + 0x30a], dl
mov byte [esp + 0x364], dl
mov byte [esp + 0x31c], dl
mov byte [esp + 0x30c], dl
mov byte [esp + 0x2fb], dl
mov byte [esp + 0x2fd], dl
mov byte [esp + 0x2fa], dl
mov byte [esp + 0x3a4], dl
mov byte [esp + 0x32c], dl
mov byte [esp + 0x428], dl
mov byte [esp + 0x2fe], dl
mov byte [esp + 0x350], dl
mov byte [esp + 0x38c], dl
mov byte [esp + 0x35c], dl
mov byte [esp + 0x40c], dl
mov byte [esp + 0x107], dl
mov byte [esp + 0x24b], dl
mov byte [esp + 0x448], dl
mov byte [esp + 0x33f], dl
mov byte [esp + 0x36c], dl
mov byte [esp + 0x42c], dl
mov byte [esp + 0xf3], dl
mov byte [esp + 0x1c7], dl
mov byte [esp + 0x1ff], dl
mov byte [esp + 0x358], dl
mov byte [esp + 0x380], dl
mov byte [esp + 0x3ac], dl
mov dword [esp + 0x314], edx
jne 0x512c7f
jmp 0x517cde
mov byte [esp + 0x29b], al
mov byte [esp + 0x388], al
mov byte [esp + 0x370], al
mov byte [esp + 0x344], al
mov byte [esp + 0x448], al
mov byte [esp + 0x3a0], al
mov byte [esp + 0x2ff], al
mov byte [esp + 0x3a8], al
mov byte [esp + 0x306], al
mov byte [esp + 0x42c], al
mov byte [esp + 0x3b4], al
mov byte [esp + 0x273], al
mov byte [esp + 0x2db], al
mov byte [esp + 0x428], al
mov dword [esp + 0x43c], eax
mov dword [esp + 0x454], eax
mov dword [esp + 0x158], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0xac], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x434], eax
mov dword [esp + 0x3bc], eax
mov dword [esp + 0x394], eax
mov dword [esp + 0x444], eax
mov dword [esp + 0x2f4], eax
mov dword [esp + 0x2ec], eax
mov dword [esp + 0x450], eax
mov dword [esp + 0x410], eax
mov dword [esp + 0x18c], eax
mov dword [esp + 0x190], eax
mov dword [esp + 0x3cc], eax
mov dword [esp + 0x3fc], eax
mov dword [esp + 0x3c0], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0x268], eax
mov dword [esp + 0x238], eax
mov dword [esp + 0x188], eax
mov dword [esp + 0x250], eax
mov dword [esp + 0x258], eax
mov dword [esp + 0x2dc], eax
mov dword [esp + 0x240], eax
mov dword [esp + 0x3e4], eax
mov dword [esp + 0x3f4], eax
mov dword [esp + 0x3f0], eax
mov dword [esp + 0x3ec], eax
mov dword [esp + 0x3f8], eax
mov dword [esp + 0x3e8], eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0x418], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x274], eax
mov dword [esp + 0x26c], eax
mov dword [esp + 0x284], eax
mov dword [esp + 0x1f8], eax
mov dword [esp + 0x1f4], eax
mov dword [esp + 0x24c], eax
mov dword [esp + 0x2a8], eax
mov dword [esp + 0x2a4], eax
mov dword [esp + 0x180], eax
mov dword [esp + 0x100], eax
mov dword [esp + 0x22c], eax
mov dword [esp + 0x228], eax
mov dword [esp + 0x1dc], eax
mov dword [esp + 0x2c4], eax
mov dword [esp + 0x19c], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x160], eax
mov dword [esp + 0x420], eax
mov dword [esp + 0x2cc], eax
mov dword [esp + 0x138], eax
mov dword [esp + 0x1f0], eax
mov dword [esp + 0x1ec], eax
mov dword [esp + 0x234], eax
mov dword [esp + 0x1a0], eax
mov dword [esp + 0x264], eax
mov dword [esp + 0x178], eax
mov dword [esp + 0x458], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0xec], eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0x208], eax
mov dword [esp + 0x214], eax
mov dword [esp + 0x260], eax
mov dword [esp + 0x218], eax
mov dword [esp + 0xdc], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x29c], eax
mov dword [esp + 0x120], eax
mov dword [esp + 0x1e8], eax
mov dword [esp + 0x1a8], eax
mov dword [esp + 0x12c], eax
mov dword [esp + 0x338], eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0x414], eax
mov dword [esp + 0x140], eax
mov dword [esp + 0x1ac], eax
mov dword [esp + 0x400], eax
mov dword [esp + 0x41c], eax
mov dword [esp + 0x1c8], eax
mov dword [esp + 0x408], eax
mov dword [esp + 0xd0], eax
mov dword [esp + 0xcc], eax
mov dword [esp + 0x108], eax
mov dword [esp + 0x280], eax
mov dword [esp + 0x27c], eax
mov dword [esp + 0x1d4], eax
mov dword [esp + 0x148], eax
mov dword [esp + 0x1b0], eax
mov dword [esp + 0x10c], eax
mov dword [esp + 0x174], eax
mov dword [esp + 0x170], eax
mov dword [esp + 0x16c], eax
mov dword [esp + 0x244], eax
mov dword [esp + 0xfc], eax
mov dword [esp + 0xc0], eax
mov dword [esp + 0x144], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0x21c], eax
mov dword [esp + 0xa4], eax
mov dword [esp + 0xe4], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xf4], eax
mov dword [esp + 0x330], eax
mov dword [esp + 0x34c], eax
mov dword [esp + 0xd8], eax
mov dword [esp + 0x23c], eax
mov dword [esp + 0x124], eax
mov dword [esp + 0x128], eax
mov dword [esp + 0x164], eax
mov dword [esp + 0x224], eax
mov dword [esp + 0x11c], eax
mov dword [esp + 0x230], eax
mov dword [esp + 0x25c], eax
mov dword [esp + 0x278], eax
mov dword [esp + 0x1d0], eax
mov dword [esp + 0x2ac], eax
mov dword [esp + 0x13c], eax
mov dword [esp + 0xf8], eax
mov dword [esp + 0x460], eax
mov dword [esp + 0x2d4], eax
mov dword [esp + 0x1b8], eax
mov dword [esp + 0xd4], eax
mov dword [esp + 0x154], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x294], eax
mov dword [esp + 0x290], eax
mov dword [esp + 0x1c0], eax
mov dword [esp + 0x194], eax
mov dword [esp + 0x46c], eax
mov dword [esp + 0x478], eax
mov dword [esp + 0x468], eax
mov dword [esp + 0x464], eax
mov dword [esp + 0x45c], eax
mov dword [esp + 0x438], eax
mov dword [esp + 0x44c], eax
mov dword [esp + 0x424], eax
mov dword [esp + 0x200], eax
mov dword [esp + 0x2b0], eax
mov dword [esp + 0x17c], eax
mov dword [esp + 0x1a4], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x1e4], eax
mov dword [esp + 0x28c], eax
mov dword [esp + 0x288], eax
mov dword [esp + 0x198], eax
mov dword [esp + 0x168], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x134], eax
mov dword [esp + 0x3d4], eax
mov dword [esp + 0x2e4], eax
mov dword [esp + 0x110], eax
mov dword [esp + 0x474], eax
mov dword [esp + 0x3e0], eax
mov dword [esp + 0x3d8], eax
mov dword [esp + 0x2e0], eax
mov dword [esp + 0x470], eax
mov dword [esp + 0x114], eax
mov dword [esp + 0x20c], eax
mov dword [esp + 0x150], eax
mov dword [esp + 0x118], eax
mov dword [esp + 0x1b4], eax
xor esi, esi
mov byte [esp + 0x3c8], al
mov byte [esp + 0x368], al
mov byte [esp + 0x430], al
mov byte [esp + 0x3dc], al
mov byte [esp + 0xb7], al
mov byte [esp + 0x15f], al
mov byte [esp + 0x1da], al
mov byte [esp + 0x14f], al
mov byte [esp + 0x1db], al
mov byte [esp + 0xe3], al
mov byte [esp + 0x1cf], al
mov byte [esp + 0x1bf], al
mov byte [esp + 0x1e3], al
mov byte [esp + 0x187], al
mov byte [esp + 0x348], al
mov byte [esp + 0x360], al
mov byte [esp + 0x2fc], al
mov byte [esp + 0x374], al
mov byte [esp + 0x384], al
mov byte [esp + 0x33f], al
mov byte [esp + 0x36c], al
mov byte [esp + 0x380], al
mov byte [esp + 0x3ac], al
mov byte [esp + 0x318], al
mov byte [esp + 0x354], al
mov byte [esp + 0x37c], al
mov byte [esp + 0x3d0], al
mov byte [esp + 0x340], al
mov byte [esp + 0x398], al
mov byte [esp + 0xf3], al
mov byte [esp + 0x1c7], al
mov byte [esp + 0x1ff], al
mov byte [esp + 0x186], al
mov byte [esp + 0x206], al
mov byte [esp + 0x378], al
mov byte [esp + 0x30b], al
mov byte [esp + 0x2f9], al
mov byte [esp + 0x334], al
mov byte [esp + 0x307], al
mov byte [esp + 0x3b0], al
mov byte [esp + 0x39c], al
mov byte [esp + 0x3c4], al
mov byte [esp + 0x2eb], al
mov byte [esp + 0x364], al
mov byte [esp + 0x3b8], al
mov byte [esp + 0x2f2], al
mov byte [esp + 0x2e9], al
mov byte [esp + 0x2fb], al
mov byte [esp + 0x2ea], al
mov byte [esp + 0x2fd], al
mov byte [esp + 0x3a4], al
mov byte [esp + 0x32c], al
mov byte [esp + 0x2fe], al
mov byte [esp + 0x350], al
mov byte [esp + 0x38c], al
mov byte [esp + 0x35c], al
mov byte [esp + 0x40c], al
mov byte [esp + 0x107], al
mov byte [esp + 0x207], al
mov byte [esp + 0x24b], al
mov byte [esp + 0x213], al
mov byte [esp + 0x223], al
mov byte [esp + 0x257], al
mov byte [esp + 0x133], al
mov byte [esp + 0x390], al
mov byte [esp + 0x2e8], al
mov byte [esp + 0x310], al
mov byte [esp + 0x328], al
mov byte [esp + 0x320], al
mov byte [esp + 0x2f3], al
mov byte [esp + 0x308], al
mov byte [esp + 0x324], al
mov byte [esp + 0x30a], al
mov byte [esp + 0x31c], al
mov byte [esp + 0x30c], al
mov byte [esp + 0x358], al
mov byte [esp + 0x2fa], al
mov byte [esp + 0x309], al
mov dword [esp + 0x314], eax
jmp 0x50eebd
mov dword [esp + 0x34c], eax
mov dword [esp + 0x3e8], eax
mov dword [esp + 0x328], eax
mov dword [esp + 0x3c4], eax
mov byte [esp + 0x33f], al
mov byte [esp + 0x338], al
lea eax, [esp + 0x550]
mov dword [esp + 0x3a0], eax
mov dword [esp + 0x39c], esi
mov dword [esp + 0x3b8], esi
mov dword [esp + 0x450], eax
mov dword [esp + 0x3b0], eax
mov dword [esp + 0x3ac], eax
mov dword [esp + 0x3a8], eax
mov dword [esp + 0x400], eax
mov dword [esp + 0x348], eax
mov dword [esp + 0x390], eax
mov dword [esp + 0x364], eax
mov dword [esp + 0x370], eax
mov dword [esp + 0x360], eax
mov dword [esp + 0x334], eax
mov dword [esp + 0x330], eax
mov dword [esp + 0x3a4], eax
mov dword [esp + 0x32c], eax
mov dword [esp + 0x37c], eax
mov dword [esp + 0x3fc], eax
mov dword [esp + 0x344], eax
mov dword [esp + 0x408], eax
mov dword [esp + 0x418], eax
mov dword [esp + 0x340], eax
mov dword [esp + 0x324], eax
mov dword [esp + 0x358], eax
mov dword [esp + 0x318], eax
mov dword [esp + 0x38c], eax
mov dword [esp + 0x384], eax
mov dword [esp + 0x320], eax
mov dword [esp + 0x350], eax
mov dword [esp + 0x3f4], eax
mov dword [esp + 0x36c], eax
mov dword [esp + 0x3dc], eax
mov dword [esp + 0x470], eax
mov dword [esp + 0x454], eax
mov dword [esp + 0x3c0], eax
mov dword [esp + 0x3b4], eax
mov dword [esp + 0x3c8], eax
mov dword [esp + 0x3cc], eax
mov dword [esp + 0x40c], eax
mov dword [esp + 0x440], eax
mov dword [esp + 0x43c], eax
mov dword [esp + 0x458], eax
mov dword [esp + 0x438], eax
mov dword [esp + 0x460], eax
mov dword [esp + 0x45c], eax
mov dword [esp + 0x3f0], eax
mov dword [esp + 0x3e4], eax
mov dword [esp + 0x3d4], eax
mov dword [esp + 0x410], eax
mov dword [esp + 0x378], eax
mov dword [esp + 0x31c], eax
mov dword [esp + 0x35c], eax
mov dword [esp + 0x388], eax
mov dword [esp + 0x354], eax
mov dword [esp + 0x368], eax
mov dword [esp + 0x394], eax
mov dword [esp + 0x434], eax
mov dword [esp + 0x398], eax
mov dword [esp + 0x46c], eax
mov dword [esp + 0x3ec], eax
mov dword [esp + 0x380], eax
mov dword [esp + 0x42c], eax
mov dword [esp + 0x44c], eax
mov dword [esp + 0x448], eax
mov dword [esp + 0x430], eax
mov dword [esp + 0x404], eax
mov dword [esp + 0x414], eax
mov dword [esp + 0x428], eax
mov dword [esp + 0x3e0], eax
mov dword [esp + 0x3d0], eax
mov dword [esp + 0x3f8], eax
mov dword [esp + 0x3d8], ecx
jmp 0x50c354
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x47c]
mov dword [eax + ecx*8 + 0x14], ebx
xor edx, edx
mov eax, edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [ebp + 0x10]
mov edi, 0x12
mov ecx, dword [ebp + 0x14]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.007c51d0
cmp edi, 0xd
jne 0x50c28a
mov eax, edi
and eax, 1
xor eax, edi
not eax
test eax, eax
je 0x50c28a
mov edi, 2
cmp dword [ebp + 0x14], 0
je 0x50c28a
cmp edi, 2
je 0x50c2a4
mov edx, 0x70000003
jmp 0x50c29a
mov eax, edi
or eax, 2
mov ecx, edi
xor ecx, 2
add ecx, eax
setne al
movzx eax, al
add edi, eax
mov eax, 3
sub eax, edi
xor eax, edi
setne al
movzx eax, al
cmp edi, eax
jb 0x50c2f0
mov eax, dword [esp + 0x420]
mov dword [esp + 0x458], eax
mov dword [esp + 0x460], edx
mov eax, dword [esp + 0x424]
mov dword [esp + 0x45c], eax
mov dword [esp + 0x410], ebx
mov dword [esp + 0x3d0], ebx
mov dword [esp + 0x470], esi
jmp 0x50c639
cmp edi, 8
jne 0x50c3a7
mov edi, 0x14
mov dword [esp], eax
mov dword [esp + 4], 0x2a
call fcn.0064bf00
mov eax, dword [esp + 0x470]
mov ebx, dword [esp + 0x454]
mov dword [esp + 0x468], ebx
mov dword [esp + 0x464], eax
cmp edi, 4
jne 0x50ec9d
mov eax, 3
sub eax, edi
xor eax, edi
jne 0x50dd76
jmp 0x50ec9d
mov edx, dword [esp + 0x34c]
mov eax, dword [esp + 0x3b8]
mov dword [eax], edx
mov esi, dword [esp + 0x3a0]
mov eax, dword [esi]
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
setne cl
movzx ecx, cl
add ecx, eax
mov dword [esi], ecx
mov eax, dword [esp + 0x374]
lea eax, [eax*8]
lea eax, [eax + eax*2]
mov dword [edx + eax], 0
mov ebx, dword [esp + 0x39c]
mov ecx, dword [ebx]
mov dword [ecx + eax + 4], 0
mov ecx, dword [ebx]
mov byte [ecx + eax + 8], 0
mov ecx, dword [ebx]
mov dword [ecx + eax + 0xc], 0
mov ecx, dword [ebx]
mov dword [ecx + eax + 0x10], 4
mov ecx, dword [ebx]
mov dword [ecx + eax + 0x14], 0
mov dword [esp], 4
call fcn.00492770
mov edi, eax
test edi, edi
jne 0x50c44f
mov eax, edi
imul eax, eax
and eax, 3
mov dword [esp + 0x444], 0x70000003
cmp eax, 2
jb 0x50c4f8
mov eax, dword [esp + 0x314]
mov dword [esp + 4], eax
mov dword [esp], edi
mov dword [esp + 8], 4
call fcn.007c51d0
mov eax, dword [ebx]
mov ecx, dword [esp + 0x374]
lea ecx, [ecx + ecx*2]
mov dword [eax + ecx*8 + 0x14], edi
lea eax, [esp + 0x558]
mov dword [esp + 0x348], eax
mov eax, dword [esi]
mov dword [esp + 0x390], eax
lea eax, [eax + eax*2]
lea eax, [eax*8 + 0x18]
mov ecx, dword [esp + 0x3b8]
mov ecx, dword [ecx]
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00492a60
test eax, eax
mov dword [esp + 0x444], 0x70000003
je 0x50c4f1
mov edx, 0xd
mov dword [esp + 0x364], eax
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
mov dword [esp + 0x474], ebx
mov eax, esi
mov esi, dword [esp + 0x454]
jne 0x50e5b0
jmp 0x50ecf0
mov dword [esp + 0x364], eax
mov dword [esp + 0x474], ebx
mov eax, esi
mov esi, dword [esp + 0x454]
jmp 0x50ecf0
mov dword [esp + 0x454], esi
mov ecx, dword [esp + 0x364]
mov eax, dword [esp + 0x3b8]
mov dword [eax], ecx
mov esi, dword [esp + 0x3a0]
inc dword [esi]
mov eax, dword [esp + 0x390]
lea eax, [eax*8]
lea eax, [eax + eax*2]
mov dword [ecx + eax], 0x1e
mov ebx, dword [esp + 0x39c]
mov ecx, dword [ebx]
mov dword [ecx + eax + 4], 0
mov ecx, dword [ebx]
mov byte [ecx + eax + 8], 0
mov ecx, dword [ebx]
mov dword [ecx + eax + 0xc], 0
mov ecx, dword [ebx]
mov dword [ecx + eax + 0x10], 4
mov ecx, dword [ebx]
mov dword [ecx + eax + 0x14], 0
mov edi, 8
mov dword [esp], 4
call fcn.00492770
mov dword [esp + 0x444], 0x70000003
test eax, eax
jne 0x50c5c8
mov ecx, eax
mov dword [esp + 0x370], eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
mov dword [esp + 0x474], ebx
mov eax, esi
mov esi, dword [esp + 0x454]
jb 0x50ecf0
jmp 0x50d9fb
mov dword [esp + 0x370], eax
mov dword [esp + 0x474], ebx
mov eax, esi
mov esi, dword [esp + 0x454]
jmp 0x50d9fb
mov eax, dword [esp + 0x348]
mov dword [esp + 4], eax
mov esi, dword [esp + 0x370]
mov dword [esp], esi
mov dword [esp + 8], 4
call fcn.007c51d0
mov edx, dword [esp + 0x39c]
mov eax, dword [edx]
mov ecx, dword [esp + 0x390]
lea ecx, [ecx + ecx*2]
mov dword [eax + ecx*8 + 0x14], esi
mov esi, dword [esp + 0x3b8]
mov dword [esp + 0x470], edx
mov eax, dword [esp + 0x3a0]
mov dword [esp + 0x454], eax
mov eax, dword [esp + 0x454]
mov edi, dword [eax]
lea ebx, [edi + edi*2]
lea eax, [ebx*8 + 0x18]
mov ecx, dword [esi]
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00492a60
test eax, eax
mov dword [esp + 0x444], 0x70000003
je 0x50c705
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
je 0x50c705
mov dword [esi], eax
mov dword [esp + 0x3dc], esi
mov esi, dword [esp + 0x454]
inc dword [esi]
shl edi, 3
lea ecx, [edi + edi*2]
mov dword [eax + ecx], 0x29
mov edx, dword [esp + 0x470]
mov eax, dword [edx]
mov dword [eax + ecx + 4], 0
mov eax, dword [edx]
mov byte [eax + ecx + 8], 0
mov eax, dword [edx]
mov dword [eax + ecx + 0xc], 0
mov eax, dword [edx]
mov dword [eax + ecx + 0x10], 4
mov eax, dword [edx]
mov dword [eax + ecx + 0x14], 0
mov dword [esp], 4
call fcn.00492770
mov edi, eax
test edi, edi
jne 0x50c728
mov eax, edi
or eax, 2
mov ecx, edi
xor ecx, 2
add ecx, eax
je 0x50c728
mov eax, dword [esp + 0x470]
mov dword [esp + 0x474], eax
mov eax, esi
jmp 0x50ecf0
mov dword [esp + 0x3dc], esi
mov eax, dword [esp + 0x470]
mov dword [esp + 0x474], eax
mov esi, dword [esp + 0x454]
mov eax, esi
jmp 0x50ecf0
lea eax, [esp + 0x55c]
mov dword [esp + 4], eax
mov dword [esp], edi
mov dword [esp + 8], 4
call fcn.007c51d0
mov eax, dword [esp + 0x470]
mov eax, dword [eax]
mov dword [eax + ebx*8 + 0x14], edi
mov eax, dword [ebp + 0x20]
lea ecx, [eax + 0xc]
mov dword [esp + 0x360], ecx
mov ecx, dword [eax]
mov dword [esp + 0x330], ecx
mov eax, dword [eax + 0xc]
mov dword [esp + 0x334], eax
mov eax, dword [esp + 0x47c]
lea ecx, [eax + 0x1a0]
mov dword [esp + 0x3a4], ecx
mov eax, dword [eax + 0x1a0]
mov dword [esp + 0x32c], eax
xor esi, esi
mov ecx, dword [ebp + 0x18]
test ecx, ecx
jne 0x50c7ce
mov eax, ecx
and eax, 1
xor eax, ecx
not eax
test eax, eax
mov eax, 0
mov ebx, dword [esp + 0x470]
je 0x50c7f5
mov dword [esp + 0x328], 0
mov eax, dword [esp + 0x3f0]
mov esi, dword [esp + 0x454]
jmp 0x50c81d
xor eax, eax
mov ebx, dword [esp + 0x470]
jmp 0x50c7f5
mov edi, 0x1a
xor ecx, eax
setne cl
movzx ecx, cl
add eax, ecx
mov ecx, dword [ebp + 0x18]
mov esi, dword [ecx + 0x10]
mov ecx, 3
sub ecx, eax
mov edx, eax
xor edx, ecx
setne dl
movzx edx, dl
cmp eax, edx
jb 0x50c7e0
mov dword [esp + 0x328], esi
mov esi, dword [esp + 0x454]
jmp 0x50cf5a
mov dword [esp + 0x3f0], eax
mov edx, dword [esp + 0x47c]
lea eax, [edx + 0x9c]
mov dword [esp + 0x37c], eax
mov eax, dword [edx + 8]
mov ecx, dword [edx + 0x9c]
lea edx, [edx + 8]
mov dword [esp + 0x3fc], edx
mov edx, dword [esp + 0x334]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x330]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x32c]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x328]
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
lea eax, [esp + 0x548]
mov dword [esp], eax
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 2
call fcn.00508b80
test eax, eax
jne 0x50c8ee
mov edi, 9
mov ecx, eax
or ecx, 2
mov edx, eax
mov dword [esp + 0x444], eax
xor edx, 2
add edx, ecx
mov dword [esp + 0x474], ebx
mov eax, esi
mov edx, ebx
mov dword [esp + 0x470], ebx
mov dword [esp + 0x468], esi
jne 0x50e808
jmp 0x50ecf0
mov dword [esp + 0x444], eax
mov dword [esp + 0x474], ebx
mov dword [esp + 0x470], ebx
mov eax, esi
jmp 0x50ecf0
mov dword [esp + 0x454], esi
mov dword [esp + 0x464], edx
call fcn.0044c050
mov dword [esp + 0x408], eax
mov dword [esp + 0x418], edx
mov dword [esp + 0x564], edx
mov dword [esp + 0x560], eax
mov ebx, dword [esp + 0x468]
mov esi, dword [ebx]
lea eax, [esi + esi*2]
lea eax, [eax*8 + 0x18]
mov edi, dword [esp + 0x3dc]
mov ecx, dword [edi]
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00492a60
test eax, eax
je 0x50ca11
mov dword [edi], eax
inc dword [ebx]
lea ecx, [esi*8]
mov dword [esp + 0x340], esi
lea ecx, [ecx + ecx*2]
mov dword [eax + ecx], 4
mov edx, dword [esp + 0x464]
mov eax, dword [edx]
mov dword [eax + ecx + 4], 0
mov eax, dword [edx]
mov byte [eax + ecx + 8], 0
mov eax, dword [edx]
mov dword [eax + ecx + 0xc], 0
mov eax, dword [edx]
mov dword [eax + ecx + 0x10], 8
mov eax, dword [edx]
mov dword [eax + ecx + 0x14], 0
lea eax, [esp + 0x560]
mov dword [esp + 0x344], eax
mov edi, 0xf
mov dword [esp], 8
call fcn.00492770
mov dword [esp + 0x324], eax
test eax, eax
mov edx, dword [esp + 0x414]
mov ecx, dword [esp + 0x440]
mov eax, dword [esp + 0x43c]
mov esi, dword [esp + 0x438]
mov ebx, dword [esp + 0x470]
jne 0x50cc0c
jmp 0x50dd00
mov dword [esp + 0x340], esi
mov edi, 4
lea eax, [esp + 0x560]
mov dword [esp + 0x344], eax
mov eax, dword [esp + 0x464]
jmp 0x50c37c
mov eax, dword [esp + 0x344]
mov dword [esp + 4], eax
mov esi, dword [esp + 0x324]
mov dword [esp], esi
mov dword [esp + 8], 8
call fcn.007c51d0
mov eax, dword [esp + 0x464]
mov eax, dword [eax]
mov ecx, dword [esp + 0x340]
lea ecx, [ecx + ecx*2]
mov dword [eax + ecx*8 + 0x14], esi
mov ecx, dword [esp + 0x47c]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], 0x80dc4c
call fcn.0043aa50
test eax, eax
mov esi, dword [esp + 0x468]
je 0x50cae7
lea ecx, [esp + 0x568]
mov dword [esp + 0x318], ecx
lea ecx, [esp + 0x570]
mov dword [esp + 0x358], ecx
movsd xmm0, qword [eax + 8]
movsd qword [esp + 0x570], xmm0
mov ecx, dword [eax + 0x10]
mov eax, dword [eax + 0x14]
mov dword [esp + 0x450], eax
mov edx, ebx
mov ebx, dword [esp + 0x464]
mov eax, dword [esp + 0x454]
jmp 0x50cccc
mov eax, 0xb
lea ecx, [esp + 0x570]
mov dword [esp + 0x358], ecx
lea ecx, [esp + 0x568]
mov dword [esp + 0x318], ecx
mov dword [esp + 0x474], ebx
mov ecx, dword [esp + 0x454]
mov dword [esp + 0x478], ecx
mov edi, dword [esp + 0x444]
mov dword [esp + 0x468], esi
mov dword [esp + 0x444], edi
mov ecx, 3
cmp eax, 0xb
mov esi, dword [esp + 0x3c4]
mov ebx, dword [esp + 0x418]
jne 0x50cbbe
mov edx, 3
sub edx, eax
xor edx, eax
je 0x50cbbe
xor ecx, ecx
mov edi, dword [esp + 0x408]
jmp 0x50cb8a
mov eax, 5
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 2
adc ecx, 0
mov dword [esp + 0x570], edi
mov dword [esp + 0x574], ebx
mov esi, edi
mov dword [esp + 0x450], ebx
mov edx, 3
sub edx, ecx
xor edx, ecx
setne dl
movzx edx, dl
cmp ecx, edx
jb 0x50cb60
mov dword [esp + 0x3c4], esi
mov ecx, dword [esp + 0x464]
mov dword [esp + 0x470], ecx
mov esi, dword [esp + 0x468]
jmp 0x50ce4a
mov edi, 0x1a
mov eax, dword [esp + 0x3f4]
mov eax, dword [eax + 0x24]
sub ecx, eax
xor ecx, eax
setne cl
movzx ecx, cl
add ecx, eax
jne 0x50cc3e
mov ebx, dword [esp + 0x474]
mov eax, dword [esp + 0x478]
mov dword [esp + 0x454], eax
mov edx, dword [esp + 0x414]
mov ecx, dword [esp + 0x440]
mov eax, dword [esp + 0x43c]
mov esi, dword [esp + 0x438]
mov dword [esp + 0x438], esi
mov dword [esp + 0x43c], eax
mov dword [esp + 0x440], ecx
cmp edi, 0xf
jne 0x50cca4
mov dword [esp + 0x414], edx
imul edi, edi
and edi, 3
cmp edi, 2
jb 0x50ca37
jmp 0x50ccab
mov esi, 0xa
call fcn.00449410
test eax, eax
mov edi, dword [esp + 0x444]
je 0x50e195
xor eax, eax
mov edx, dword [esp + 0x3f4]
jmp 0x50cc84
mov ecx, 3
sub ecx, eax
xor ecx, eax
setne cl
movzx ecx, cl
add eax, ecx
mov esi, dword [edx + 0x24]
mov ecx, eax
and ecx, 1
xor ecx, eax
cmp ecx, 0xffffffff
setne cl
movzx ecx, cl
cmp eax, ecx
jb 0x50cc70
mov dword [esp + 0x400], esi
jmp 0x50e312
mov dword [esp + 0x414], edx
mov dword [esp + 0x474], ebx
mov eax, dword [esp + 0x454]
mov dword [esp + 0x478], eax
mov esi, dword [esp + 0x468]
jmp 0x50edfc
mov dword [esp + 0x3c4], ecx
mov dword [esp + 0x478], eax
mov dword [esp + 0x474], edx
mov edi, 8
mov dword [esp + 0x468], 0x10
mov dword [esp + 0x568], ecx
mov eax, dword [esp + 0x450]
mov dword [esp + 0x56c], eax
mov eax, dword [esi]
mov dword [esp + 0x38c], eax
lea eax, [eax + eax*2]
lea eax, [eax*8 + 0x18]
mov ecx, dword [esp + 0x3dc]
mov ecx, dword [ecx]
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00492a60
mov dword [esp + 0x384], eax
test eax, eax
mov dword [esp + 0x470], ebx
mov dword [esp + 0x454], esi
je 0x50e365
mov eax, dword [esp + 0x468]
cmp eax, 8
mov ecx, eax
je 0x50ce29
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
je 0x50ce29
mov eax, dword [esp + 0x3dc]
mov edx, dword [esp + 0x384]
mov dword [eax], edx
mov esi, dword [esp + 0x454]
mov eax, dword [esi]
mov ecx, eax
and ecx, 1
xor ecx, eax
cmp ecx, 0xffffffff
setne cl
movzx ecx, cl
add ecx, eax
mov dword [esi], ecx
mov eax, dword [esp + 0x38c]
lea eax, [eax*8]
lea eax, [eax + eax*2]
mov dword [edx + eax], 0x3d
mov edx, dword [esp + 0x470]
mov ecx, dword [edx]
mov dword [ecx + eax + 4], 0
mov ecx, dword [edx]
mov byte [ecx + eax + 8], 0
mov ecx, dword [edx]
mov dword [ecx + eax + 0xc], 0
mov ecx, dword [edx]
mov dword [ecx + eax + 0x10], 8
mov ecx, dword [edx]
mov dword [ecx + eax + 0x14], 0
mov edi, 0xf
mov dword [esp], 8
call fcn.00492770
test eax, eax
jne 0x50ceb7
mov esi, 4
mov ecx, eax
or ecx, 2
mov dword [esp + 0x320], eax
mov edx, eax
xor edx, 2
add edx, ecx
mov eax, dword [esp + 0x478]
jne 0x50d88a
jmp 0x50e74a
mov eax, 2
cmp dword [esp + 0x388], 0
mov ebx, dword [esp + 0x418]
mov esi, dword [esp + 0x454]
je 0x50e903
cmp eax, 2
je 0x50ce81
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
je 0x50ce81
mov dword [esp + 0x418], ebx
mov ebx, dword [esp + 0x470]
mov edx, dword [esp + 0x474]
mov eax, dword [esp + 0x478]
mov ecx, dword [esp + 0x3c4]
jmp 0x50cccc
mov dword [esp + 0x454], esi
mov esi, 0x1c
mov eax, dword [esp + 0x388]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x354]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x394]
mov dword [esp], eax
call fcn.007c51d0
jmp 0x50e8df
mov dword [esp + 0x320], eax
jmp 0x50e743
mov edi, 0xd
mov eax, dword [esp + 0x318]
mov dword [esp + 4], eax
mov esi, dword [esp + 0x320]
mov dword [esp], esi
mov dword [esp + 8], 8
call fcn.007c51d0
mov eax, dword [esp + 0x470]
mov eax, dword [eax]
mov ecx, dword [esp + 0x38c]
lea ecx, [ecx + ecx*2]
mov dword [eax + ecx*8 + 0x14], esi
mov esi, dword [esp + 0x454]
mov eax, dword [esi]
mov dword [esp + 0x378], eax
lea eax, [eax + eax*2]
lea eax, [eax*8 + 0x18]
mov ecx, dword [esp + 0x3dc]
mov ecx, dword [ecx]
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00492a60
mov dword [esp + 0x31c], eax
test eax, eax
je 0x50cf53
mov ecx, 0x10
xor eax, eax
test al, al
mov ebx, dword [esp + 0x470]
je 0x50d65f
jmp 0x50cf5a
mov ebx, dword [esp + 0x470]
cmp edi, 0xd
je 0x50cf8a
xor eax, eax
test al, al
mov dword [esp + 0x474], eax
mov dword [esp + 0x478], eax
mov dword [esp + 0x444], eax
mov eax, dword [esp + 0x3f0]
je 0x50c81d
jmp 0x50d047
mov dword [esp + 0x474], eax
mov dword [esp + 0x478], eax
mov dword [esp + 0x444], eax
jmp 0x50d047
mov edx, dword [esp + 0x31c]
mov eax, dword [esp + 0x3dc]
mov dword [eax], edx
mov eax, dword [esi]
mov ecx, eax
and ecx, 1
xor ecx, eax
cmp ecx, 0xffffffff
setne cl
movzx ecx, cl
add ecx, eax
mov dword [esi], ecx
mov eax, dword [esp + 0x378]
lea eax, [eax*8]
lea eax, [eax + eax*2]
mov dword [edx + eax], 0x47
mov ecx, dword [ebx]
mov dword [ecx + eax + 4], 0
mov ecx, dword [ebx]
mov byte [ecx + eax + 8], 0
mov ecx, dword [ebx]
mov dword [ecx + eax + 0xc], 0
mov ecx, dword [ebx]
mov dword [ecx + eax + 0x10], 8
mov ecx, dword [ebx]
mov dword [ecx + eax + 0x14], 0
mov dword [esp], 8
call fcn.00492770
test eax, eax
je 0x50d040
mov edx, 0xd
mov ecx, eax
mov dword [esp + 0x35c], eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jne 0x50ee15
jmp 0x50d047
mov dword [esp + 0x35c], eax
xor ecx, ecx
mov edi, dword [esp + 0x444]
jmp 0x50d079
mov eax, 0x14
inc ecx
mov edi, 0x70000003
mov dword [esp + 0x474], ebx
mov dword [esp + 0x478], esi
mov edx, ecx
not edx
and edx, 1
add edx, ecx
setne dl
movzx edx, dl
cmp ecx, edx
jb 0x50d060
mov dword [esp + 0x464], ebx
mov dword [esp + 0x468], esi
mov ebx, dword [esp + 0x418]
mov ecx, dword [esp + 0x400]
jmp 0x50e222
mov ebx, 1
mov eax, dword [esp + 0x358]
mov dword [esp + 4], eax
mov esi, dword [esp + 0x35c]
mov dword [esp], esi
mov dword [esp + 8], 8
call fcn.007c51d0
mov eax, dword [esp + 0x470]
mov eax, dword [eax]
mov ecx, dword [esp + 0x378]
lea ecx, [ecx + ecx*2]
mov dword [eax + ecx*8 + 0x14], esi
mov eax, dword [esp + 0x3a4]
mov eax, dword [eax]
mov ecx, dword [esp + 0x3fc]
mov ecx, dword [ecx]
mov dword [esp + 0x590], 0
mov dword [esp + 0x58c], 0
mov dword [esp + 0x578], 4
mov dword [esp + 0x57c], 2
mov dword [esp + 0x580], ecx
mov dword [esp + 0x584], eax
mov dword [esp + 0x588], 0xfffffffc
test eax, eax
jne 0x50d167
mov dword [esp + 0x3f0], edi
mov ecx, dword [esp + 0x458]
mov edx, dword [esp + 0x460]
mov esi, dword [esp + 0x45c]
jmp 0x50d30e
mov dword [esp + 0x3f0], edi
lea eax, [esp + 0x58c]
mov dword [esp + 8], eax
lea eax, [esp + 0x590]
mov dword [esp + 4], eax
lea eax, [esp + 0x578]
mov dword [esp], eax
call fcn.00593400
test eax, eax
jne 0x50d44a
mov dword [esp + 0x310], 1
mov esi, dword [esp + 0x58c]
mov eax, dword [esp + 0x590]
mov dword [esp + 0x354], eax
mov eax, dword [esp + 0x454]
mov edi, dword [eax]
lea eax, [edi + edi*2]
lea eax, [eax*8 + 0x18]
mov ebx, dword [esp + 0x3dc]
mov ecx, dword [ebx]
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00492a60
test eax, eax
je 0x50d290
mov dword [ebx], eax
mov ebx, dword [esp + 0x454]
mov ecx, dword [ebx]
mov edx, 3
sub edx, ecx
xor edx, ecx
setne dl
movzx edx, dl
add edx, ecx
mov dword [ebx], edx
lea ecx, [edi*8]
mov dword [esp + 0x368], edi
lea ecx, [ecx + ecx*2]
mov dword [eax + ecx], 3
mov edx, dword [esp + 0x470]
mov eax, dword [edx]
mov dword [eax + ecx + 4], 0xfffffffc
mov eax, dword [edx]
mov byte [eax + ecx + 8], 0xff
mov eax, dword [edx]
mov dword [eax + ecx + 0xc], 0
mov eax, dword [edx]
mov dword [eax + ecx + 0x10], esi
mov eax, dword [edx]
mov dword [eax + ecx + 0x14], 0
mov dword [esp], esi
mov dword [esp + 0x388], esi
call fcn.00492770
test eax, eax
jne 0x50d2f7
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
mov dword [esp + 0x394], eax
mov dword [esp + 0x468], 8
jne 0x50d44a
jmp 0x50cd4b
mov dword [esp + 0x368], edi
mov dword [esp + 0x388], esi
mov eax, dword [esp + 0x470]
mov dword [esp + 0x464], eax
mov esi, dword [esp + 0x454]
mov eax, dword [esp + 0x440]
mov dword [esp + 0x468], eax
mov edi, dword [esp + 0x43c]
mov eax, dword [esp + 0x458]
mov ecx, dword [esp + 0x438]
mov dword [esp + 0x3bc], ecx
mov ebx, dword [esp + 0x460]
mov edx, dword [esp + 0x45c]
mov ecx, dword [esp + 0x468]
jmp 0x50d37b
mov dword [esp + 0x394], eax
mov dword [esp + 0x468], 8
jmp 0x50cd4b
cmp ebx, 1
je 0x50d361
xor eax, eax
test al, al
mov dword [esp + 0x420], ecx
mov dword [esp + 0x458], ecx
mov dword [esp + 0x41c], edx
mov dword [esp + 0x460], edx
mov dword [esp + 0x424], esi
mov dword [esp + 0x45c], esi
mov eax, dword [esp + 0x470]
mov dword [esp + 0x464], eax
mov edx, dword [esp + 0x454]
je 0x50ebfa
jmp 0x50d44a
mov dword [esp + 0x45c], esi
mov dword [esp + 0x460], edx
mov dword [esp + 0x458], ecx
jmp 0x50d44a
mov dword [esp + 0x41c], ebx
mov dword [esp + 0x424], edx
mov dword [esp + 0x420], eax
mov dword [esp + 0x468], esi
mov ebx, ecx
mov ecx, 3
mov edx, eax
mov eax, dword [esp + 0x310]
sub ecx, eax
xor ecx, eax
setne cl
movzx ecx, cl
cmp eax, ecx
mov ecx, edx
mov eax, dword [esp + 0x464]
mov dword [esp + 0x470], eax
mov dword [esp + 0x454], esi
mov dword [esp + 0x440], ebx
mov dword [esp + 0x43c], edi
mov dword [esp + 0x458], ecx
mov ecx, dword [esp + 0x3bc]
mov dword [esp + 0x438], ecx
mov eax, dword [esp + 0x41c]
mov dword [esp + 0x460], eax
mov eax, dword [esp + 0x424]
mov dword [esp + 0x45c], eax
mov edx, ebx
je 0x50d44a
jmp 0x50ddf2
mov edx, eax
imul edx, edx
and edx, 3
cmp edx, 2
adc eax, 0
mov edx, dword [ebx]
mov dword [edx + ecx*8 + 0x14], esi
mov edx, eax
or edx, 2
mov edi, eax
xor edi, 2
add edi, edx
setne dl
movzx edx, dl
cmp eax, edx
jb 0x50d420
mov edi, 9
mov eax, dword [esp + 0x590]
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0x3fc]
mov eax, dword [eax]
lea ecx, [esp + 0x544]
mov dword [esp + 8], ecx
lea ecx, [esp + 0x548]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.0059a8d0
mov dword [esp + 0x444], eax
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x50d4d2
mov eax, dword [esp + 0x544]
mov dword [esp + 0x468], eax
mov ecx, dword [eax + 4]
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 2
sete dl
movzx edx, dl
xor edi, edi
cmp ecx, edx
jne 0x50d4e6
mov esi, dword [esp + 0x454]
jmp 0x50e444
mov ecx, dword [esp + 0x470]
mov edx, ecx
mov eax, dword [esp + 0x454]
mov ebx, eax
jmp 0x50d560
mov ecx, dword [ebp + 0x28]
mov edx, 3
sub edx, ecx
xor edx, ecx
setne dl
test ecx, ecx
sete cl
setne byte [esp + 0x338]
and cl, dl
mov byte [esp + 0x33f], cl
mov dword [esp + 0x41c], 0
mov ecx, dword [esp + 0x470]
mov dword [esp + 0x464], ecx
mov eax, dword [esp + 0x454]
mov ebx, eax
xor esi, esi
mov dword [esp + 0x474], ecx
mov dword [esp + 0x478], eax
mov dword [esp + 0x3bc], 0
xor edi, edi
xor eax, eax
mov dword [esp + 0x470], 0
mov edx, dword [esp + 0x468]
jmp 0x50d5b2
mov dword [esp + 0x478], eax
mov dword [esp + 0x474], ecx
cmp edi, 9
jne 0x50d59f
mov eax, edi
or eax, 2
xor edi, 2
add edi, eax
mov dword [esp + 0x470], edx
mov esi, ebx
mov dword [esp + 0x468], ebx
mov eax, dword [esp + 0x478]
jne 0x50ecf0
jmp 0x50ea46
mov dword [esp + 0x468], ebx
mov eax, dword [esp + 0x478]
jmp 0x50ea46
mov dword [esp + 0x404], edi
mov dword [esp + 0x420], eax
mov dword [esp + 0x424], esi
mov dword [esp + 0x468], ebx
mov esi, 0xa
mov ecx, dword [edx + 8]
mov eax, edx
mov dword [esp + 0x434], ecx
imul ebx, edi, 0x1c
mov edx, dword [ecx + ebx + 4]
cmp edx, 1
je 0x50d6e4
mov ecx, 0x18
cmp edx, 0x3e
mov dword [esp + 0x398], edx
jne 0x50d73d
mov ebx, dword [esp + 0x464]
mov esi, dword [esp + 0x468]
mov dword [esp + 0x42c], eax
mov eax, dword [esp + 0x41c]
mov dword [esp + 0x44c], eax
mov eax, dword [esp + 0x424]
mov dword [esp + 0x448], eax
mov eax, dword [esp + 0x3bc]
mov dword [esp + 0x430], eax
mov eax, dword [esp + 0x420]
mov dword [esp + 0x414], eax
mov eax, dword [esp + 0x470]
mov dword [esp + 0x428], eax
cmp ecx, 0x10
mov edi, dword [esp + 0x3f0]
je 0x50cfa4
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
je 0x50cfa4
mov dword [esp + 0x470], ebx
mov dword [esp + 0x454], esi
mov esi, 0x11
imul ecx, dword [esp + 0x404], 0x1c
mov eax, dword [esp + 0x434]
mov ecx, dword [eax + ecx + 0x14]
cmp ecx, 8
mov dword [esp + 0x444], 0x30000003
je 0x50d875
mov edi, 0x15
mov edx, ecx
and edx, 1
inc edx
xor edx, ecx
mov eax, dword [esp + 0x470]
mov dword [esp + 0x474], eax
mov eax, dword [esp + 0x454]
jne 0x50e095
jmp 0x50d88a
mov dword [esp + 0x398], edx
mov dword [esp + 0x42c], eax
mov eax, dword [esp + 0x41c]
mov dword [esp + 0x44c], eax
mov eax, dword [esp + 0x424]
mov dword [esp + 0x448], eax
mov eax, dword [esp + 0x3bc]
mov dword [esp + 0x430], eax
mov eax, dword [esp + 0x420]
mov dword [esp + 0x414], eax
mov eax, dword [esp + 0x470]
mov dword [esp + 0x428], eax
jmp 0x50df66
mov ecx, dword [esp + 0x434]
mov ecx, dword [ecx + ebx]
mov esi, ecx
not esi
and esi, 1
add esi, ecx
setne bl
movzx esi, bl
cmp ecx, esi
mov ebx, dword [esp + 0x41c]
mov edx, eax
jne 0x50d7f1
test byte [esp + 0x33f], 1
mov dword [esp + 0x42c], edx
mov dword [esp + 0x44c], ebx
mov eax, dword [esp + 0x424]
mov dword [esp + 0x448], eax
mov esi, dword [esp + 0x3bc]
mov dword [esp + 0x430], esi
mov ecx, dword [esp + 0x420]
mov dword [esp + 0x414], ecx
mov edi, dword [esp + 0x470]
mov dword [esp + 0x428], edi
mov dword [esp + 0x440], edx
mov dword [esp + 0x43c], edi
mov dword [esp + 0x458], ecx
mov ecx, esi
mov dword [esp + 0x438], ecx
mov dword [esp + 0x460], ebx
mov ebx, 0x1a
mov dword [esp + 0x45c], eax
jne 0x50ddf2
jmp 0x50df89
mov dword [esp + 0x310], 8
cmp ecx, 2
mov eax, ebx
sete bl
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
or cl, bl
mov ebx, eax
test byte [esp + 0x338], cl
mov dword [esp + 0x42c], edx
mov dword [esp + 0x44c], ebx
mov ecx, edx
mov edx, dword [esp + 0x424]
mov dword [esp + 0x448], edx
mov eax, dword [esp + 0x3bc]
mov dword [esp + 0x430], eax
mov eax, dword [esp + 0x420]
mov dword [esp + 0x414], eax
mov edi, dword [esp + 0x470]
mov dword [esp + 0x428], edi
mov esi, dword [esp + 0x468]
je 0x50d37b
jmp 0x50da9e
mov eax, dword [esp + 0x470]
mov dword [esp + 0x474], eax
mov eax, dword [esp + 0x454]
cmp esi, 4
je 0x50d913
mov dword [esp + 0x478], eax
imul esi, esi
and esi, 3
cmp esi, 3
je 0x50e3b4
imul eax, dword [esp + 0x404], 0x1c
mov ecx, dword [esp + 0x434]
mov eax, dword [ecx + eax + 0x18]
mov ecx, dword [eax]
mov dword [esp + 0x41c], ecx
mov eax, dword [eax + 4]
mov dword [esp + 0x424], eax
mov eax, dword [esp + 0x470]
mov dword [esp + 0x464], eax
mov eax, dword [esp + 0x454]
mov dword [esp + 0x468], eax
mov edx, dword [esp + 0x42c]
mov edi, dword [esp + 0x428]
mov eax, dword [esp + 0x414]
mov dword [esp + 0x420], eax
mov ecx, dword [esp + 0x430]
jmp 0x50ddf2
mov dword [esp + 0x478], eax
jmp 0x50e3b4
imul eax, dword [esp + 0x404], 0x1c
mov ecx, dword [esp + 0x434]
mov ecx, dword [ecx + eax + 0x14]
cmp ecx, 4
jne 0x50da6e
mov edx, ecx
or edx, 2
xor ecx, 2
add ecx, edx
je 0x50da6e
xor ecx, ecx
mov edx, 0xffffffff
jmp 0x50d9c1
mov edi, 0x10
inc ecx
mov esi, dword [esp + 0x434]
mov esi, dword [esi + eax + 0x18]
mov esi, dword [esi]
mov dword [esp + 0x458], esi
dec edx
mov esi, dword [esp + 0x42c]
mov dword [esp + 0x440], esi
mov esi, dword [esp + 0x428]
mov dword [esp + 0x43c], esi
mov esi, dword [esp + 0x430]
mov dword [esp + 0x438], esi
mov esi, dword [esp + 0x44c]
mov dword [esp + 0x460], esi
mov esi, dword [esp + 0x448]
mov dword [esp + 0x45c], esi
mov esi, ecx
and esi, 1
xor esi, edx
setne bl
movzx esi, bl
cmp ecx, esi
jb 0x50d960
mov dword [esp + 0x444], 0x30000003
mov ecx, dword [esp + 0x464]
mov dword [esp + 0x470], ecx
mov eax, dword [esp + 0x468]
mov esi, eax
mov dword [esp + 0x474], ecx
mov dword [esp + 0x478], eax
cmp edi, 8
je 0x50c5e4
xor eax, eax
test al, al
jne 0x50c5e4
mov eax, dword [esp + 0x470]
mov dword [esp + 0x464], eax
mov dword [esp + 0x468], esi
mov edx, dword [esp + 0x440]
mov edi, dword [esp + 0x43c]
mov eax, dword [esp + 0x458]
mov dword [esp + 0x420], eax
mov ecx, dword [esp + 0x438]
mov eax, dword [esp + 0x460]
mov dword [esp + 0x41c], eax
mov eax, dword [esp + 0x45c]
mov dword [esp + 0x424], eax
jmp 0x50ddf2
mov dword [esp + 0x454], 0x18
mov dword [esp + 0x444], 0x30000003
mov eax, dword [esp + 0x464]
mov dword [esp + 0x474], eax
mov dword [esp + 0x478], ebx
jmp 0x50def4
mov dword [esp + 0x41c], ebx
mov dword [esp + 0x470], edi
mov edi, ecx
mov dword [esp + 0x424], edx
mov dword [esp + 0x468], esi
xor esi, esi
mov ecx, dword [esp + 0x398]
cmp ecx, 3
je 0x50db82
mov cl, 1
test cl, cl
mov ecx, dword [esp + 0x434]
mov dword [esp + 0x40c], ecx
mov ebx, dword [esp + 0x418]
je 0x50dc0a
mov dword [esp + 0x420], eax
mov dword [esp + 0x440], edi
mov eax, dword [esp + 0x470]
mov dword [esp + 0x43c], eax
mov eax, dword [esp + 0x3bc]
mov dword [esp + 0x438], eax
mov eax, dword [esp + 0x474]
mov dword [esp + 0x470], eax
mov edx, dword [esp + 0x478]
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x460], eax
mov eax, dword [esp + 0x448]
mov dword [esp + 0x45c], eax
mov eax, dword [esp + 0x414]
mov dword [esp + 0x458], eax
mov eax, dword [esp + 0x434]
mov dword [esp + 0x40c], eax
mov eax, dword [esp + 0x3d0]
mov ecx, dword [esp + 0x410]
mov dword [esp + 0x478], 6
jmp 0x50e0aa
mov eax, dword [esp + 0x434]
mov dword [esp + 0x40c], eax
mov ebx, dword [esp + 0x418]
jmp 0x50dc0a
mov eax, esi
or eax, 2
mov ecx, esi
xor ecx, 2
add ecx, eax
setne al
movzx eax, al
add esi, eax
mov ecx, dword [esp + 0x47c]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x18], ebx
mov edx, dword [esp + 0x408]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x448]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x44c]
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], 0x80dc4c
call fcn.0043ab10
mov eax, dword [esp + 0x544]
mov eax, dword [eax + 8]
mov dword [esp + 0x40c], eax
test esi, esi
jne 0x50dc19
mov eax, esi
not eax
and eax, 1
add eax, esi
jne 0x50dba0
mov dword [esp + 0x418], ebx
mov eax, dword [esp + 0x474]
mov dword [esp + 0x470], eax
mov eax, dword [esp + 0x478]
mov dword [esp + 0x454], eax
mov eax, dword [esp + 0x44c]
mov ecx, dword [esp + 0x448]
mov edx, dword [esp + 0x414]
mov dword [esp + 0x45c], ecx
mov dword [esp + 0x460], eax
imul edi, dword [esp + 0x404], 0x1c
mov eax, dword [esp + 0x40c]
lea eax, [eax + edi]
mov ecx, dword [esp + 0x3a4]
mov ebx, dword [ecx]
mov ecx, dword [esp + 0x37c]
mov esi, edx
mov edx, dword [ecx]
mov ecx, dword [esp + 0x3fc]
mov ecx, dword [ecx]
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp + 0x10], 0x21
mov dword [esp + 0xc], 0
mov dword [esp], 0
call fcn.00579030
mov ecx, dword [esp + 0x544]
mov edx, dword [ecx + 8]
cmp dword [edx + edi + 4], 3
mov edx, esi
mov esi, dword [esp + 0x430]
je 0x50dcd1
mov esi, 1
mov edi, 0x1f
mov ebx, dword [esp + 0x460]
mov dword [esp + 0x44c], ebx
mov ebx, dword [esp + 0x45c]
mov dword [esp + 0x448], ebx
mov dword [esp + 0x458], edx
mov ebx, dword [esp + 0x470]
cmp edi, 0xf
jne 0x50dda6
mov dword [esp + 0x414], edx
mov edx, edi
or edx, 2
xor edi, 2
add edi, edx
mov edx, ecx
mov dword [esp + 0x440], ecx
mov edi, eax
mov dword [esp + 0x43c], eax
mov eax, dword [esp + 0x458]
mov dword [esp + 0x420], eax
mov ecx, esi
mov dword [esp + 0x438], esi
mov eax, dword [esp + 0x460]
mov dword [esp + 0x41c], eax
mov dword [esp + 0x474], ebx
mov eax, dword [esp + 0x454]
mov dword [esp + 0x478], eax
mov eax, dword [esp + 0x45c]
mov dword [esp + 0x424], eax
je 0x50ddf2
mov dword [esp + 0x444], 0x70000003
mov eax, dword [esp + 0x464]
mov dword [esp + 0x470], eax
mov ecx, dword [esp + 0x468]
mov esi, ecx
mov dword [esp + 0x474], eax
mov eax, ecx
jmp 0x50ecf0
mov dword [esp + 0x414], edx
mov edx, ecx
mov edi, eax
mov eax, dword [esp + 0x458]
mov dword [esp + 0x420], eax
mov ecx, esi
mov eax, dword [esp + 0x460]
mov dword [esp + 0x41c], eax
mov eax, dword [esp + 0x45c]
mov dword [esp + 0x424], eax
mov dword [esp + 0x474], ebx
mov eax, dword [esp + 0x454]
mov dword [esp + 0x478], eax
mov esi, edi
mov ebx, ecx
mov dword [esp + 0x454], 0xa
mov eax, edx
mov edi, dword [esp + 0x404]
mov ecx, edi
imul ecx, ecx
and ecx, 3
cmp ecx, 2
adc edi, 0
cmp edi, dword [edx + 4]
jae 0x50de99
mov ecx, edi
not ecx
and ecx, 1
add ecx, edi
mov dword [esp + 0x440], edx
mov dword [esp + 0x43c], esi
mov eax, dword [esp + 0x420]
mov dword [esp + 0x458], eax
mov dword [esp + 0x3bc], ebx
mov dword [esp + 0x438], ebx
mov ecx, esi
mov dword [esp + 0x470], ecx
mov esi, dword [esp + 0x41c]
mov dword [esp + 0x460], esi
mov esi, dword [esp + 0x424]
mov dword [esp + 0x45c], esi
mov dword [esp + 0x3b0], ebx
mov dword [esp + 0x3ac], eax
mov dword [esp + 0x3a8], ecx
mov ebx, dword [esp + 0x468]
jne 0x50d5b2
jmp 0x50def4
mov dword [esp + 0x440], edx
mov dword [esp + 0x438], ebx
mov eax, dword [esp + 0x41c]
mov dword [esp + 0x460], eax
mov eax, dword [esp + 0x424]
mov dword [esp + 0x45c], eax
mov dword [esp + 0x3b0], ebx
mov ebx, dword [esp + 0x420]
mov dword [esp + 0x458], ebx
mov dword [esp + 0x3ac], ebx
mov dword [esp + 0x43c], esi
mov dword [esp + 0x3a8], esi
mov ebx, dword [esp + 0x468]
cmp dword [esp + 0x454], 0xa
je 0x50df20
xor eax, eax
test al, al
jne 0x50df20
mov eax, dword [esp + 0x464]
mov dword [esp + 0x470], eax
mov esi, ebx
mov eax, dword [esp + 0x478]
jmp 0x50ecf0
mov dword [esp + 0x468], ebx
mov esi, 7
mov ebx, 0xe
mov ecx, dword [esp + 0x3b0]
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
sete al
movzx eax, al
cmp ecx, eax
mov eax, dword [esp + 0x3ac]
mov dword [esp + 0x3c0], eax
mov eax, dword [esp + 0x3a8]
mov dword [esp + 0x3b4], eax
jne 0x50df89
cmp esi, 7
mov ebx, dword [esp + 0x468]
je 0x50e3f8
mov eax, esi
and eax, 1
inc eax
xor eax, esi
jne 0x50d91f
jmp 0x50e3f8
cmp ebx, 0xe
jne 0x50e031
mov edi, 0xb
mov esi, dword [ebp + 0x20]
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x47c]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x12
mov dword [esp], 0
xor ecx, ecx
xor edx, edx
call fcn.00522bc0
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x50e072
mov eax, 0x10
lea ecx, [esi + 0x2c]
mov dword [esp + 0x350], ecx
mov ecx, dword [esi + 0x2c]
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 3
sete dl
movzx edx, dl
cmp ecx, edx
mov ebx, dword [esp + 0x468]
je 0x50e3f0
jmp 0x50e97d
mov eax, dword [esp + 0x440]
mov edi, dword [esp + 0x43c]
mov esi, dword [esp + 0x458]
mov ecx, dword [esp + 0x438]
mov dword [esp + 0x3bc], ecx
mov ebx, dword [esp + 0x460]
mov edx, dword [esp + 0x45c]
mov ecx, eax
mov eax, esi
mov esi, dword [esp + 0x468]
jmp 0x50da9e
mov eax, dword [esp + 0x464]
mov dword [esp + 0x470], eax
mov eax, dword [esp + 0x468]
mov dword [esp + 0x454], eax
mov eax, dword [esp + 0x478]
cmp edi, 0xb
mov esi, dword [esp + 0x454]
je 0x50e408
jmp 0x50ecf0
mov dword [esp + 0x454], edx
mov dword [esp + 0x410], ecx
mov dword [esp + 0x3d0], eax
mov esi, dword [esp + 0x478]
cmp esi, 6
mov edx, dword [esp + 0x458]
mov eax, dword [esp + 0x460]
mov ecx, dword [esp + 0x45c]
je 0x50dc51
imul esi, esi
and esi, 3
cmp esi, 2
mov dword [esp + 0x44c], eax
mov dword [esp + 0x448], ecx
mov dword [esp + 0x414], edx
jne 0x50ec32
jmp 0x50dc51
mov eax, dword [esp + 0x360]
mov eax, dword [eax]
mov ecx, dword [esi + 0x20]
mov edx, dword [esi + 0x24]
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], ecx
call fcn.004337b0
mov ecx, eax
mov eax, dword [esp + 0x350]
cmp dword [eax], 0
mov edi, dword [esp + 0x444]
jne 0x50e164
mov dword [esp + 0x3f4], ecx
mov eax, dword [esp + 0x464]
mov dword [esp + 0x470], eax
mov esi, ebx
mov ebx, dword [esp + 0x418]
jmp 0x50e3c7
mov dword [esp + 0x468], ebx
mov eax, 7
test ecx, ecx
mov dword [esp + 0x3f4], ecx
mov ebx, dword [esp + 0x418]
je 0x50e286
mov esi, 6
xor ecx, ecx
test cl, cl
jne 0x50e286
cmp esi, 6
jne 0x50e214
mov eax, 3
sub eax, esi
xor eax, esi
je 0x50e214
mov dword [esp + 0x418], ebx
mov eax, 0x12
mov esi, dword [esp + 0x3f4]
mov edx, dword [esi + 0x1c]
mov dword [esp + 0x400], edx
mov ecx, edx
not ecx
and ecx, 1
add ecx, edx
setne cl
movzx ecx, cl
add ecx, edx
jne 0x50e27f
mov eax, 0x17
mov ecx, 0xe
lea edx, [esi + 0x20]
mov dword [esp + 0x36c], edx
mov edx, dword [esi + 0x20]
mov esi, edx
and esi, 1
xor esi, edx
cmp esi, 0xffffffff
setne bl
movzx esi, bl
add esi, edx
mov esi, dword [esp + 0x468]
jne 0x50cb24
jmp 0x50ede4
mov eax, 0xc
mov ecx, dword [esp + 0x36c]
mov ecx, dword [ecx]
mov dword [esp + 0x444], edi
mov dword [esp + 0x400], ecx
mov dword [esp + 0x418], ebx
cmp eax, 0xc
jne 0x50e26c
imul eax, eax
and eax, 3
cmp eax, 2
mov edx, dword [esp + 0x464]
mov dword [esp + 0x470], edx
mov esi, dword [esp + 0x468]
mov eax, dword [esp + 0x478]
jb 0x50e320
jmp 0x50ecf0
mov eax, dword [esp + 0x464]
mov dword [esp + 0x470], eax
jmp 0x50e4b5
mov ebx, dword [esp + 0x418]
mov dword [esp + 0x418], ebx
cmp eax, 7
jne 0x50e30b
xor eax, eax
jmp 0x50e2d0
add ecx, edx
setne cl
movzx ecx, cl
add eax, ecx
mov ecx, dword [esp + 0x47c]
mov ecx, dword [ecx + 0xa8]
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 2
sete dl
movzx edx, dl
cmp ecx, edx
setne cl
movzx edi, cl
mov ecx, eax
or ecx, 2
mov edx, eax
xor edx, 2
mov esi, ecx
add esi, edx
setne bl
movzx esi, bl
cmp eax, esi
jb 0x50e2a0
mov edx, edi
mov eax, dword [esp + 0x464]
mov dword [esp + 0x470], eax
mov eax, dword [esp + 0x468]
mov dword [esp + 0x454], eax
jmp 0x50e87e
mov dword [esp + 0x444], edi
mov edx, dword [esp + 0x464]
mov eax, dword [esp + 0x478]
mov dword [esp + 0x478], eax
mov dword [esp + 0x464], edx
mov edi, 1
mov ecx, dword [esp + 0x400]
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
sete al
movzx eax, al
cmp ecx, eax
mov dword [esp + 0x470], edx
mov esi, dword [esp + 0x468]
mov dword [esp + 0x454], esi
je 0x50edfc
mov eax, edi
and eax, 1
xor eax, edi
cmp eax, 0xffffffff
setne al
movzx eax, al
cmp edi, eax
jne 0x50e39f
mov eax, 0xb
mov ecx, dword [esp + 0x3f4]
mov edx, dword [ecx + 0x40]
test edx, edx
je 0x50e835
xor ecx, ecx
test cl, cl
je 0x50e87e
jmp 0x50e835
mov dword [esp + 0x474], eax
mov dword [esp + 0x478], eax
mov dword [esp + 0x444], eax
mov esi, dword [esp + 0x454]
mov ebx, dword [esp + 0x470]
jmp 0x50d047
mov dword [esp + 0x418], ebx
mov eax, dword [esp + 0x3f4]
mov dword [esp], eax
call fcn.004302d0
mov eax, dword [esp + 0x470]
mov dword [esp + 0x464], eax
mov ebx, esi
mov esi, dword [ebp + 0x20]
mov dword [esp], esi
call fcn.00411ea0
mov eax, dword [esp + 0x464]
mov dword [esp + 0x470], eax
mov esi, ebx
mov ecx, dword [esp + 0x3c0]
test ecx, ecx
jne 0x50e5cc
mov eax, ecx
not eax
and eax, 1
add eax, ecx
mov edi, dword [esp + 0x3b4]
mov eax, dword [esp + 0x470]
mov dword [esp + 0x474], eax
mov eax, esi
mov dword [esp + 0x444], ecx
je 0x50ecf0
mov ebx, 6
mov eax, dword [esp + 0x558]
mov dword [esp + 4], eax
mov dword [esp], 0x80dc3c
call fcn.0043a7c0
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
mov eax, dword [esp + 0x470]
mov dword [esp + 0x474], eax
mov edx, esi
mov dword [esp + 0x444], edi
mov ecx, eax
mov eax, edx
mov dword [esp + 0x468], esi
je 0x50ecf0
mov dword [esp + 0x478], eax
cmp ebx, 6
je 0x50e4c8
mov eax, ebx
and eax, 1
inc eax
xor eax, ebx
je 0x50e4c8
mov dword [esp + 0x470], ecx
mov esi, dword [esp + 0x468]
mov eax, dword [esp + 0x478]
jmp 0x50ecf0
mov dword [esp + 0x464], ecx
mov eax, dword [esp + 0x558]
mov dword [esp + 0x5a8], eax
mov dword [esp + 0x59c], 0
mov dword [esp + 0x598], 0
mov dword [esp + 0x5a0], 0
lea eax, [esp + 0x5a0]
mov dword [esp + 0x46c], eax
mov dword [esp + 0x594], 0
lea esi, [esp + 0x598]
mov dword [esp], esi
mov dword [esp + 8], 0xc
mov dword [esp + 4], 0
call fcn.007c51a0
mov dword [esp + 0x598], 0x2e
mov eax, dword [esp + 0x59c]
mov edi, dword [esp + 0x5a0]
lea ebx, [edi + edi*2]
lea ecx, [ebx*8 + 0x18]
lea edx, [esp + 0x59c]
mov dword [esp + 0x3ec], edx
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00492a60
test eax, eax
jne 0x50e5e8
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
test ecx, ecx
je 0x50e5e8
mov edx, 6
mov dword [esp + 0x410], 0x70000003
mov eax, dword [esp + 0x464]
mov dword [esp + 0x470], eax
mov esi, dword [esp + 0x468]
mov eax, dword [esp + 0x478]
cmp edx, 6
jne 0x50c50d
mov edx, dword [esp + 0x470]
mov dword [esp + 0x468], esi
jmp 0x50ea46
mov eax, dword [esp + 0x470]
mov dword [esp + 0x474], eax
mov eax, esi
mov dword [esp + 0x444], ecx
jmp 0x50ecf0
mov dword [esp + 0x59c], eax
mov ecx, dword [esp + 0x5a0]
mov edx, 3
sub edx, ecx
xor edx, ecx
setne dl
movzx edx, dl
add edx, ecx
mov dword [esp + 0x5a0], edx
shl edi, 3
lea ecx, [edi + edi*2]
mov dword [eax + ecx], 0x1e
mov eax, dword [esp + 0x59c]
mov dword [eax + ecx + 4], 0
mov eax, dword [esp + 0x59c]
mov byte [eax + ecx + 8], 0
mov eax, dword [esp + 0x59c]
mov dword [eax + ecx + 0xc], 0
mov eax, dword [esp + 0x59c]
mov dword [eax + ecx + 0x10], 4
mov eax, dword [esp + 0x59c]
mov dword [eax + ecx + 0x14], 0
mov dword [esp], 4
call fcn.00492770
mov edi, eax
test edi, edi
mov dword [esp + 0x410], 0x70000003
je 0x50e708
xor eax, eax
test al, al
jne 0x50e708
lea eax, [esp + 0x5a8]
mov dword [esp + 4], eax
mov dword [esp], edi
mov dword [esp + 8], 4
call fcn.007c51d0
mov eax, dword [esp + 0x59c]
mov dword [eax + ebx*8 + 0x14], edi
mov eax, dword [esp + 0x3fc]
mov eax, dword [eax]
lea ecx, [esp + 0x594]
mov dword [esp + 8], ecx
mov dword [esp + 4], esi
mov dword [esp], eax
call fcn.0059a8d0
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x50e71b
mov ecx, dword [esp + 0x594]
mov eax, dword [ecx + 4]
mov dword [esp + 0x380], eax
xor edi, edi
test eax, eax
jne 0x50e785
mov dword [esp + 0x410], 0
mov edx, dword [esp + 0x464]
mov eax, dword [esp + 0x478]
jmp 0x50ea46
mov dword [esp + 0x410], eax
mov edi, 0x1c
mov eax, dword [esp + 0x464]
mov dword [esp + 0x470], eax
mov eax, dword [esp + 0x468]
mov dword [esp + 0x454], eax
mov eax, dword [esp + 0x478]
mov dword [esp + 0x478], eax
cmp edi, 0xf
je 0x50cec3
xor eax, eax
test al, al
jne 0x50cec3
mov edx, dword [esp + 0x470]
mov eax, dword [esp + 0x454]
mov dword [esp + 0x468], eax
mov eax, dword [esp + 0x478]
jmp 0x50ea46
mov dword [esp + 0x454], eax
jmp 0x50e7c6
mov dword [esp + 0x454], 3
cmp edx, 0xffffffff
setne dl
movzx edx, dl
add edi, edx
mov edx, dword [ecx + 8]
mov dword [esp + 0x3e8], edx
mov dword [esp + 0x3e4], 0
mov dword [esp + 0x3d4], 0
mov edx, edi
and edx, 1
xor edx, edi
cmp edx, 0xffffffff
setne bl
movzx esi, bl
cmp edi, esi
jb 0x50e790
mov dword [esp + 0x410], 0
mov eax, dword [esp + 0x474]
mov dword [esp + 0x470], eax
mov esi, dword [esp + 0x478]
mov edx, dword [esp + 0x464]
mov edi, dword [esp + 0x454]
cmp edi, 3
jne 0x50c90a
mov ecx, edi
not ecx
and ecx, 1
add ecx, edi
je 0x50c90a
mov eax, dword [esp + 0x470]
mov dword [esp + 0x474], eax
mov eax, esi
jmp 0x50e930
cmp eax, 0xb
jne 0x50ee42
xor eax, eax
jmp 0x50e867
xor ecx, eax
setne cl
movzx ecx, cl
add eax, ecx
mov ecx, dword [esp + 0x47c]
mov esi, dword [ecx + 0x1c4]
mov ecx, 3
sub ecx, eax
mov edx, eax
xor edx, ecx
setne dl
movzx edx, dl
cmp eax, edx
jb 0x50e850
mov edx, esi
mov dword [esp + 0x3f0], edx
mov eax, edx
and eax, 1
inc eax
xor eax, edx
sete al
movzx eax, al
mov esi, dword [ebp + 0x20]
mov ecx, dword [esi + 0x34]
mov edi, ecx
and edi, 0xfffffffe
mov ebx, 3
sub ebx, ecx
xor ebx, ecx
setne bl
movzx ebx, bl
or ebx, ecx
cmp edx, eax
cmove ebx, edi
mov dword [esi + 0x34], ebx
mov eax, ebx
and eax, 5
and ebx, 1
inc ebx
xor ebx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
setne al
movzx eax, al
mov dword [esi + 0x38], eax
mov esi, 0x10
mov ebx, dword [esp + 0x418]
cmp esi, 0x10
jne 0x50e8fc
imul esi, esi
and esi, 3
cmp esi, 2
mov esi, dword [esp + 0x454]
jb 0x50e3c7
jmp 0x50e903
mov esi, dword [esp + 0x454]
mov dword [esp + 0x454], esi
mov dword [esp + 0x418], ebx
xor eax, eax
mov ecx, dword [esp + 0x368]
lea ecx, [ecx + ecx*2]
mov esi, dword [esp + 0x394]
mov ebx, dword [esp + 0x470]
jmp 0x50d434
mov dword [esp + 0x478], eax
mov dword [esp + 0x464], edx
mov edi, dword [esp + 0x3e4]
imul eax, edi, 0x1c
mov ecx, dword [esp + 0x3e8]
mov ecx, dword [ecx + eax + 4]
cmp ecx, 1
mov esi, dword [ebp + 0x20]
mov ebx, dword [esp + 0x468]
jne 0x50e9ed
mov eax, 0x1a
mov edx, ecx
not edx
and edx, 1
add edx, ecx
mov dword [esp + 0x3e0], edi
je 0x50e9f4
cmp eax, 0x10
je 0x50e10d
imul eax, eax
and eax, 3
cmp eax, 3
je 0x50e10d
mov edi, 0xf
imul eax, dword [esp + 0x3e0], 0x1c
mov ecx, dword [esp + 0x3e8]
mov ecx, dword [ecx + eax + 0x14]
mov dword [esp + 0x410], 0x30000003
cmp ecx, 4
mov edx, dword [esp + 0x464]
jne 0x50eb51
imul ecx, ecx
and ecx, 3
cmp ecx, 1
ja 0x50eb51
mov ecx, dword [esp + 0x3e8]
mov eax, dword [ecx + eax + 0x18]
mov eax, dword [eax]
mov dword [esp + 0x3d4], eax
jmp 0x50e9f4
mov dword [esp + 0x3e0], edi
mov dword [esp + 0x468], ebx
mov eax, dword [esp + 0x3e0]
lea ecx, [eax + 1]
cmp ecx, dword [esp + 0x380]
jb 0x50eb64
mov eax, ecx
mov dword [esp + 0x3e4], ecx
imul eax, eax
and eax, 3
cmp eax, 2
mov eax, dword [esp + 0x3d4]
mov dword [esp + 0x410], eax
mov edx, dword [esp + 0x464]
mov eax, dword [esp + 0x478]
je 0x50e930
mov dword [esp + 0x464], edx
mov dword [esp + 0x478], 0x12
mov ecx, eax
mov eax, dword [esp + 0x46c]
mov eax, dword [eax]
mov dword [esp + 0x454], eax
test eax, eax
mov edx, dword [esp + 0x458]
mov dword [esp + 0x420], edx
mov edx, dword [esp + 0x460]
mov dword [esp + 0x41c], edx
mov edx, dword [esp + 0x45c]
mov dword [esp + 0x424], edx
mov eax, dword [esp + 0x474]
mov dword [esp + 0x470], eax
mov edx, ecx
mov ecx, dword [esp + 0x410]
mov eax, ecx
mov esi, dword [esp + 0x44c]
mov dword [esp + 0x460], esi
mov edi, dword [esp + 0x448]
mov dword [esp + 0x45c], edi
mov ebx, dword [esp + 0x414]
mov dword [esp + 0x458], ebx
je 0x50e0aa
mov dword [esp + 0x414], ebx
mov dword [esp + 0x448], edi
mov dword [esp + 0x44c], esi
xor edi, edi
mov ecx, dword [esp + 0x478]
cmp ecx, 7
mov edx, ecx
mov ebx, eax
mov eax, dword [esp + 0x454]
jne 0x50eb3a
mov ecx, edx
or ecx, 2
xor edx, 2
add edx, ecx
je 0x50eb3a
lea eax, [esp + 0x550]
mov dword [esp + 0x454], eax
lea esi, [esp + 0x54c]
mov edx, dword [esp + 0x41c]
jmp 0x50c304
mov dword [esp + 0x410], ebx
mov dword [esp + 0x3d0], ebx
mov dword [esp + 0x3f8], eax
jmp 0x50eb8c
mov ecx, dword [esp + 0x474]
mov eax, dword [esp + 0x478]
jmp 0x50d560
mov dword [esp + 0x3e4], ecx
mov eax, dword [esp + 0x3d4]
mov dword [esp + 0x410], eax
mov edx, dword [esp + 0x464]
mov eax, dword [esp + 0x478]
jmp 0x50e930
mov ebx, 0x10
mov eax, dword [esp + 0x3ec]
mov eax, dword [eax]
lea ecx, [edi + edi*2]
mov esi, dword [eax + ecx*8 + 0x14]
test esi, esi
je 0x50ed76
xor ebx, ebx
mov ecx, dword [esp + 0x3f8]
jmp 0x50ebd2
inc ebx
mov dword [esp], esi
call fcn.004936c0
mov eax, dword [esp + 0x46c]
mov ecx, dword [eax]
mov eax, ebx
not eax
and eax, 1
add eax, ebx
setne al
movzx eax, al
cmp ebx, eax
jb 0x50ebc0
mov dword [esp + 0x3f8], ecx
mov dword [esp + 0x3d8], edi
mov edx, dword [esp + 0x468]
mov ecx, dword [esp + 0x3d8]
mov eax, ecx
not eax
and eax, 1
add eax, ecx
setne al
movzx edi, al
add edi, ecx
mov eax, dword [esp + 0x3f8]
cmp edi, eax
jb 0x50ee9c
mov dword [esp + 0x468], edx
xor eax, eax
test al, al
jne 0x50eb8c
mov edi, 8
mov eax, dword [esp + 0x3ec]
mov eax, dword [eax]
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0x594]
test eax, eax
mov ecx, dword [esp + 0x420]
mov dword [esp + 0x458], ecx
mov ecx, dword [esp + 0x41c]
mov dword [esp + 0x460], ecx
mov ecx, dword [esp + 0x424]
mov dword [esp + 0x45c], ecx
mov ecx, dword [esp + 0x464]
mov dword [esp + 0x470], ecx
mov ecx, dword [esp + 0x468]
mov dword [esp + 0x454], ecx
jne 0x50c354
xor eax, eax
mov edx, dword [esp + 0x3d0]
mov esi, dword [esp + 0x464]
mov edi, dword [esp + 0x468]
jmp 0x50ecd1
mov ecx, 3
sub ecx, eax
xor ecx, eax
setne cl
movzx ecx, cl
add eax, ecx
test eax, eax
je 0x50ecc0
mov dword [esp + 0x470], esi
mov eax, edi
mov dword [esp + 0x474], esi
mov esi, eax
mov eax, edi
mov dword [esp + 0x444], edx
mov ecx, 0x1d
mov edx, dword [eax]
test edx, edx
je 0x50edb3
mov dword [esp + 0x478], eax
mov dword [esp + 0x454], esi
mov edi, 0x14
mov ebx, 1
mov esi, dword [esp + 0x474]
nop
mov eax, dword [esi]
mov eax, dword [eax + edi]
test eax, eax
je 0x50ed47
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
je 0x50ed47
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0x478]
mov edx, dword [eax]
add edi, 0x18
cmp ebx, edx
lea ebx, [ebx + 1]
jb 0x50ed20
mov eax, 0x1a
xor ecx, ecx
test cl, cl
jne 0x50ed20
mov dword [esp + 0x3c8], esi
mov ecx, dword [esp + 0x444]
mov dword [esp + 0x3cc], ecx
jmp 0x50e835
mov ecx, dword [esp + 0x420]
mov edx, dword [esp + 0x41c]
mov esi, dword [esp + 0x424]
mov eax, dword [esp + 0x464]
mov dword [esp + 0x470], eax
mov eax, dword [esp + 0x468]
mov dword [esp + 0x454], eax
mov dword [esp + 0x3d8], edi
jmp 0x50d30e
mov dword [esp + 0x478], eax
mov eax, dword [esp + 0x470]
mov dword [esp + 0x464], eax
mov eax, dword [esp + 0x474]
mov dword [esp + 0x3c8], eax
mov edi, dword [esp + 0x444]
mov dword [esp + 0x3cc], edi
cmp ecx, 0xe
jne 0x50ee42
mov dword [esp + 0x444], edi
mov eax, ecx
or eax, 2
xor ecx, 2
add ecx, eax
je 0x50ee42
mov edx, 6
mov ecx, dword [esp + 0x47c]
mov edi, dword [ecx + 0xa8]
mov ebx, dword [esp + 0x464]
cmp edx, 6
je 0x50eea8
mov dword [esp + 0x470], ebx
mov dword [esp + 0x454], esi
imul edx, edx
and edx, 3
cmp edx, 3
jne 0x50d0ad
mov edx, edi
jmp 0x50e87e
mov eax, dword [esp + 0x3c8]
mov eax, dword [eax]
mov dword [esp], eax
call fcn.004936c0
mov esi, dword [esp + 0x544]
test esi, esi
je 0x50ee90
xor edi, edi
mov ebx, 3
jmp 0x50ee82
inc edi
mov dword [esp], esi
mov dword [esp + 4], 0x2a
call fcn.0064bf00
dec ebx
mov eax, edi
xor eax, ebx
setne al
movzx eax, al
cmp edi, eax
jb 0x50ee70
mov eax, dword [esp + 0x3cc]
jmp 0x50c29c
mov dword [esp + 0x468], edx
jmp 0x50eb8c
mov dword [esp + 0x470], ebx
mov dword [esp + 0x454], esi
mov edx, edi
jmp 0x50e87e
mov dword [esp + 0x2a0], esi
lea eax, [esp + 0x510]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x50c]
mov esi, dword [esp + 0x510]
lea ebx, [esi + esi*2]
lea ecx, [ebx*8 + 0x18]
lea edx, [esp + 0x50c]
mov dword [esp + 0x300], edx
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00492a60
test eax, eax
jne 0x50ef83
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jae 0x50ef83
mov eax, 7
mov dword [esp + 0x58], 0x70000003
mov ecx, dword [esp + 0x2a0]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x440], ecx
mov ecx, dword [esp + 0x45c]
mov dword [esp + 0x45c], ecx
cmp eax, 7
mov ecx, dword [esp + 0x28c]
je 0x50f138
xor eax, eax
test al, al
jne 0x50f144
mov esi, 0x1b
mov byte [esp + 0x2f9], 3
test ecx, ecx
jne 0x517269
mov eax, ecx
or eax, 2
xor ecx, 2
add ecx, eax
jne 0x513967
jmp 0x517269
mov dword [esp + 0x50c], eax
mov ecx, dword [esp + 0x510]
mov edx, ecx
not edx
and edx, 1
add edx, ecx
setne dl
movzx edx, dl
add edx, ecx
mov dword [esp + 0x510], edx
shl esi, 3
lea ecx, [esi + esi*2]
mov dword [eax + ecx], 0x10
mov eax, dword [esp + 0x50c]
mov dword [eax + ecx + 4], 0
mov eax, dword [esp + 0x50c]
mov byte [eax + ecx + 8], 0
mov eax, dword [esp + 0x50c]
mov dword [eax + ecx + 0xc], 0
mov eax, dword [esp + 0x50c]
mov dword [eax + ecx + 0x10], 8
mov eax, dword [esp + 0x50c]
mov dword [eax + ecx + 0x14], 0
mov dword [esp], 8
call fcn.00492770
mov esi, eax
test esi, esi
jne 0x50f05b
mov eax, 3
sub eax, esi
xor eax, esi
je 0x50f05b
mov ecx, 0x16
mov dword [esp + 0x58], 0x70000003
mov ebx, dword [esp + 0x450]
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
mov eax, dword [esp + 0x2a0]
mov dword [esp + 0x50], eax
mov dword [esp + 0x440], eax
mov edi, dword [esp + 0x3fc]
jmp 0x50f165
mov edi, dword [esp + 0x47c]
mov dword [esp + 4], edi
mov dword [esp], esi
mov dword [esp + 8], 8
call fcn.007c51d0
mov eax, dword [esp + 0x50c]
mov dword [eax + ebx*8 + 0x14], esi
lea eax, [edi + 0x1a0]
mov dword [esp + 0x264], eax
mov eax, dword [edi + 0x1a0]
lea ecx, [edi + 0x9c]
mov dword [esp + 0x178], ecx
mov ecx, dword [edi + 8]
mov edx, dword [edi + 0x9c]
lea esi, [edi + 8]
mov dword [esp + 0x458], esi
mov dword [esp + 0x10], eax
mov ebx, dword [esp + 0x2a0]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
lea eax, [esp + 0x508]
mov dword [esp], eax
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 3
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
call fcn.00508b80
test eax, eax
je 0x50f150
mov ecx, eax
mov dword [esp + 0x58], eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
mov dword [esp + 0x50], ebx
mov dword [esp + 0x440], ebx
mov esi, 4
jne 0x516c0a
jmp 0x517918
mov ebx, dword [esp + 0x440]
jmp 0x516c0a
mov ebx, dword [esp + 0x440]
jmp 0x516c0a
mov dword [esp + 0x58], eax
mov dword [esp + 0x440], ebx
mov esi, 4
jmp 0x517918
cmp ecx, 6
jne 0x50f1a0
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jae 0x50f1a0
mov dword [esp + 0x3fc], edi
mov dword [esp + 0x450], ebx
mov eax, dword [esp + 0x2d0]
mov dword [esp + 0x44c], eax
mov ebx, dword [esp + 0x440]
jmp 0x516c0a
mov esi, 0x16
mov byte [esp + 0x15f], 0x50
lea eax, [esp + 0x518]
mov dword [esp + 0x74], eax
call fcn.0044c050
mov dword [esp + 0x90], eax
mov dword [esp + 0x8c], edx
mov dword [esp + 0x51c], edx
mov dword [esp + 0x518], eax
mov eax, dword [esp + 0x4c]
mov eax, dword [eax]
mov dword [esp + 0x84], eax
lea eax, [eax + eax*2]
lea eax, [eax*8 + 0x18]
mov ecx, dword [esp + 0x300]
mov ecx, dword [ecx]
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00492a60
test eax, eax
je 0x50f2e2
mov edx, 9
mov ecx, eax
mov dword [esp + 0x80], eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jne 0x511c4a
jmp 0x515df4
mov dword [esp + 0x80], eax
jmp 0x515df4
mov dword [esp + 0x2a0], ebx
mov edx, dword [esp + 0x80]
mov edi, dword [esp + 0x300]
mov dword [edi], edx
mov esi, dword [esp + 0x4c]
mov eax, dword [esi]
mov ecx, 3
sub ecx, eax
xor ecx, eax
setne cl
movzx ecx, cl
add ecx, eax
mov dword [esi], ecx
mov ebx, dword [esp + 0x84]
lea eax, [ebx*8]
lea eax, [eax + eax*2]
mov dword [edx + eax], 4
mov ecx, dword [edi]
mov dword [ecx + eax + 4], 0
mov ecx, dword [edi]
mov byte [ecx + eax + 8], 0
mov ecx, dword [edi]
mov dword [ecx + eax + 0xc], 0
mov ecx, dword [edi]
mov dword [ecx + eax + 0x10], 8
mov ecx, dword [edi]
mov dword [ecx + eax + 0x14], 0
mov dword [esp], 8
call fcn.00492770
mov esi, eax
test esi, esi
je 0x50f542
mov byte [esp + 0x1da], 0x2a
mov eax, dword [esp + 0x74]
mov dword [esp + 4], eax
mov dword [esp], esi
mov dword [esp + 8], 8
call fcn.007c51d0
mov eax, dword [edi]
lea ecx, [ebx + ebx*2]
mov dword [eax + ecx*8 + 0x14], esi
mov eax, dword [esp + 0x264]
mov eax, dword [eax]
mov ecx, dword [esp + 0x178]
mov ecx, dword [ecx]
mov edx, dword [esp + 0x458]
mov edx, dword [edx]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x440]
mov dword [esp + 4], eax
mov dword [esp], ecx
mov dword [esp + 8], 0x27
lea ecx, [esp + 0x508]
call fcn.00578690
mov ecx, dword [esp + 0x47c]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 4], ecx
mov dword [esp], eax
mov dword [esp + 8], 0xffcb
call fcn.00427270
test eax, eax
je 0x50f579
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
mov edx, dword [esp + 0x23c]
mov ebx, dword [esp + 0x2a0]
je 0x50f59b
mov dword [esp + 0xec], eax
mov eax, dword [esp + 0x264]
mov eax, dword [eax]
mov ecx, dword [esp + 0x458]
mov ecx, dword [ecx]
mov dword [esp + 0x538], 0
mov dword [esp + 0x534], 0
mov dword [esp + 0x520], 4
mov dword [esp + 0x524], 2
mov dword [esp + 0x528], ecx
mov dword [esp + 0x52c], eax
mov dword [esp + 0x530], 0xfffffff9
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
je 0x50f562
lea eax, [esp + 0x534]
mov dword [esp + 8], eax
lea eax, [esp + 0x538]
mov dword [esp + 4], eax
lea eax, [esp + 0x520]
mov dword [esp], eax
call fcn.00593400
test eax, eax
jne 0x50f562
mov eax, dword [esp + 0x2a0]
mov dword [esp + 0x50], eax
mov ecx, dword [esp + 0x424]
mov edx, dword [esp + 0x44c]
mov edi, 9
jmp 0x50f5ca
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
mov dword [esp + 0x50], ebx
jmp 0x50f97c
mov dword [esp + 0xec], eax
mov eax, dword [esp + 0x2a0]
mov dword [esp + 0x50], eax
mov edi, dword [esp + 0x460]
mov edx, dword [esp + 0x23c]
jmp 0x50f5ad
mov dword [esp + 0xec], eax
mov dword [esp + 0x50], ebx
mov edi, dword [esp + 0x460]
mov ebx, 0xd
jmp 0x50f652
mov dword [esp + 0x44c], edx
mov dword [esp + 0x424], ecx
cmp edi, 9
je 0x50f5ee
xor eax, eax
test al, al
mov ebx, dword [esp + 0x440]
je 0x516c0a
mov eax, 0xb
mov dl, byte [esp + 0x15f]
movzx ecx, dl
cmp ecx, 0x15
je 0x50f623
cmp ecx, 0x50
jne 0x50f636
mov ebx, dword [esp + 0x440]
mov esi, dword [esp + 0xe4]
jmp 0x5156a8
mov dword [esp + 0x23c], edx
mov dword [esp + 0x460], edi
cmp ebx, 6
je 0x50f68c
mov dword [esp + 0x2a0], ebx
mov edx, dword [esp + 0x64]
mov ebx, dword [esp + 0x300]
mov dword [ebx], edx
mov esi, dword [esp + 0x4c]
mov eax, dword [esi]
mov ecx, 3
sub ecx, eax
xor ecx, eax
setne cl
movzx ecx, cl
add ecx, eax
mov dword [esi], ecx
mov eax, dword [esp + 0xac]
lea eax, [eax*8]
lea eax, [eax + eax*2]
mov dword [edx + eax], 0x22
mov ecx, dword [ebx]
mov dword [ecx + eax + 4], 0xfffffff9
mov ecx, dword [ebx]
mov byte [ecx + eax + 8], 0xff
mov ecx, dword [ebx]
mov dword [ecx + eax + 0xc], 0
mov ecx, dword [ebx]
mov edi, dword [esp + 0x68]
mov dword [ecx + eax + 0x10], edi
mov ecx, dword [ebx]
mov dword [ecx + eax + 0x14], 0
mov esi, 0xf
mov dword [esp], edi
call fcn.00492770
mov dword [esp + 0xb0], eax
test eax, eax
je 0x50f7ad
xor eax, eax
test al, al
mov eax, dword [esp + 0x450]
mov ebx, dword [esp + 0x2a0]
jne 0x50f7c8
mov eax, 0x19
mov ecx, edi
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp edi, ecx
jne 0x50f7e3
mov dword [esp + 0x50], ebx
mov edx, dword [esp + 0x3fc]
mov bl, byte [esp + 0x30c]
mov esi, dword [esp + 0x150]
jmp 0x514641
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
mov eax, dword [esp + 0x2a0]
mov dword [esp + 0x50], eax
jmp 0x50f7d3
mov dword [esp + 0x2c8], eax
mov dword [esp + 0x50], ebx
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
jmp 0x50f813
mov esi, 0x10
mov dword [esp + 8], edi
mov eax, dword [esp + 0x60]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xb0]
mov dword [esp], eax
call fcn.007c51d0
mov ecx, dword [esp + 0x450]
mov dword [esp + 0x50], ebx
jmp 0x50fbb1
cmp esi, 0xf
je 0x50f98a
xor eax, eax
test al, al
jne 0x50f98a
mov eax, dword [esp + 0x2dc]
mov eax, dword [eax + 8]
mov dword [esp + 0x4f8], eax
mov dword [esp], eax
mov dword [esp + 4], 1
call fcn.00493840
mov esi, eax
mov dword [esp + 0x4fc], esi
test esi, esi
je 0x50f8ea
xor ebx, ebx
mov dword [esp + 0x404], eax
mov edi, dword [esp + 0x22c]
jmp 0x50f89d
mov dword [esp + 0x404], 3
inc ebx
mov eax, dword [esp + 0x4f8]
mov edi, dword [esp + 0x2dc]
mov ecx, dword [edi + 4]
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov dword [esp], esi
call fcn.007c51d0
mov eax, ebx
not eax
and eax, 1
add eax, ebx
setne al
movzx eax, al
cmp ebx, eax
jb 0x50f870
mov dword [esp + 0x44c], 0x70000003
mov dword [esp + 0x22c], edi
mov eax, dword [esp + 0x2c8]
mov dword [esp + 0x450], eax
mov eax, dword [esp + 0x2ac]
mov dword [esp + 0x424], eax
mov edi, dword [esp + 0x404]
jmp 0x511c1f
mov dword [esp + 0x2d0], 0x70000003
mov eax, dword [esp + 0x2c8]
mov dword [esp + 0x450], eax
mov edx, dword [esp + 0x2ac]
jmp 0x519c46
mov eax, 1
mov esi, ecx
not esi
and esi, 1
add esi, ecx
setne bl
movzx esi, bl
add ecx, esi
mov esi, dword [esp + 0x300]
mov esi, dword [esi]
mov dword [esi + edx*8 + 0x14], edi
mov esi, 3
sub esi, ecx
xor esi, ecx
setne bl
movzx esi, bl
cmp ecx, esi
jb 0x50f910
mov edi, dword [esp + 0x3e0]
mov ecx, eax
or ecx, 2
mov edx, eax
xor edx, 2
add edx, ecx
setne cl
movzx ecx, cl
cmp eax, ecx
jne 0x50fb08
mov dword [esp + 0x3e0], edi
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
mov eax, dword [esp + 0x538]
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0xec]
mov dword [esp], eax
call fcn.004234b0
mov ecx, dword [esp + 0x2c8]
mov edi, dword [esp + 0x440]
mov edx, dword [esp + 0x2d0]
mov al, byte [esp + 0x1da]
movzx eax, al
cmp eax, 0x28
jne 0x50fa48
mov dword [esp + 0x44c], edx
mov dword [esp + 0x450], ecx
mov byte [esp + 0x1da], 0x28
mov bl, 0x43
lea eax, [esp + 0x508]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 3
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
xor ecx, ecx
xor edx, edx
call fcn.00572ee0
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
je 0x50fac1
mov dword [esp + 0x58], eax
mov ebx, edi
jmp 0x516c0a
mov dword [esp + 0x44c], edx
mov dword [esp + 0x450], ecx
mov esi, 7
mov byte [esp + 0x1da], 0x2a
mov bl, 0x43
lea eax, [esp + 0x508]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 3
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
xor ecx, ecx
xor edx, edx
call fcn.00572ee0
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x50fb8f
mov esi, 0xc
movzx ecx, bl
cmp ecx, 4
je 0x50fb9f
mov byte [esp + 0x374], 0x77
mov edx, dword [esp + 0x18c]
cmp edx, 7
sete al
mov ecx, edx
and ecx, 1
inc ecx
xor ecx, edx
sete dl
or dl, al
mov eax, dword [esp + 0x214]
mov ecx, dword [eax]
cmp ecx, 0x64
setb al
mov esi, ecx
and esi, 1
inc esi
xor esi, ecx
sete cl
movzx edx, dl
cmp edx, 1
mov edx, dword [esp + 0x3d8]
jne 0x50fc3e
or al, cl
je 0x50fc3e
cmp dword [esp + 0x250], 0
mov eax, dword [esp + 0x470]
mov dword [esp + 0x46c], eax
mov dword [esp + 0x478], edi
mov dword [esp + 0x3e0], edi
mov dword [esp + 0x468], edx
jmp 0x511346
mov dword [esp + 0x58], eax
mov dword [esp + 0x440], edi
jmp 0x519d0f
mov eax, dword [esp + 0x44c]
cmp esi, 0xc
jne 0x50fbf7
mov dword [esp + 0x2c8], ecx
mov dword [esp + 0x2d0], eax
mov ebx, 0xe
mov esi, 0x13
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
mov dword [esp], eax
call fcn.0059ab80
mov dword [esp + 0x58], eax
test eax, eax
jne 0x51a1c3
jmp 0x5189a2
mov dword [esp + 0x450], ecx
mov dword [esp + 0x44c], eax
xor ecx, ecx
mov eax, dword [esp + 0xac]
lea edx, [eax + eax*2]
mov edi, dword [esp + 0xb0]
jmp 0x50f933
mov eax, dword [esp + 0x470]
mov dword [esp + 0x46c], eax
mov dword [esp + 0x478], edi
mov dword [esp + 0x3e0], edi
mov dword [esp + 0x468], edx
jmp 0x511397
mov esi, 9
mov byte [esp + 0x14f], 0xc
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
lea ecx, [esp + 0x490]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.0059a7b0
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
mov dword [esp + 0x58], 0x70000030
cmp eax, ecx
jne 0x516c0a
cmp esi, 6
je 0x50fcdc
xor eax, eax
test al, al
jne 0x513598
mov eax, 5
mov byte [esp + 0x14f], 0x28
mov byte [esp + 0x1e3], 0x22
lea ecx, [esp + 0x494]
mov dword [esp + 0x208], ecx
mov ecx, dword [esp + 0x494]
shl ecx, 8
or ecx, dword [esp + 0x498]
mov edx, dword [esp + 0x47c]
mov dword [edx + 0xd0], ecx
mov ecx, dword [esp + 0x264]
mov ecx, dword [ecx]
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 2
sete dl
movzx edx, dl
cmp ecx, edx
lea edx, [esp + 0x498]
mov dword [esp + 0x214], edx
je 0x51a4d0
mov byte [esp + 0x1db], 4
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
mov dword [esp + 0x540], 0
mov dword [esp + 0x53c], 0
mov dword [esp + 0x520], 4
mov dword [esp + 0x524], 2
mov dword [esp + 0x528], eax
mov dword [esp + 0x52c], ecx
mov dword [esp + 0x530], 0xfffffffd
lea eax, [esp + 0x53c]
mov dword [esp + 8], eax
lea eax, [esp + 0x540]
mov dword [esp + 4], eax
lea eax, [esp + 0x520]
mov dword [esp], eax
call fcn.00593400
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x517745
mov al, 0x39
movzx eax, al
cmp eax, 0x39
mov ecx, dword [esp + 0x300]
jne 0x50fe76
mov byte [esp + 0x29b], 0x5c
mov eax, esi
and eax, 1
xor eax, esi
cmp eax, 0xffffffff
setne al
movzx eax, al
add esi, eax
mov eax, dword [esp + 0x260]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x218]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x29c]
mov dword [esp], eax
call fcn.007c51d0
mov eax, esi
imul eax, eax
and eax, 3
cmp eax, 2
sbb eax, eax
and eax, 1
cmp esi, eax
jb 0x50ffe0
jmp 0x515b11
mov esi, 0xe
mov byte [esp + 0x1db], 0x29
mov eax, dword [esp + 0x540]
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
mov dword [esp + 0x4b0], eax
mov eax, dword [esp + 0x264]
mov eax, dword [eax]
mov dword [esp + 0x4b4], eax
mov dword [esp + 0x4b8], 0xfffffff8
lea eax, [esp + 0x4f8]
mov dword [esp + 8], eax
lea eax, [esp + 0x4fc]
mov dword [esp + 4], eax
lea eax, [esp + 0x4a8]
mov dword [esp], eax
call fcn.00593400
test eax, eax
jne 0x513b12
mov esi, 0x10
mov edi, dword [esp + 0x4f8]
mov eax, dword [esp + 0x4fc]
mov dword [esp + 0x1e8], eax
mov eax, dword [esp + 0x4c]
mov eax, dword [eax]
mov dword [esp + 0x1a8], eax
lea eax, [eax + eax*2]
lea eax, [eax*8 + 0x18]
mov ecx, dword [esp + 0x300]
mov ecx, dword [ecx]
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00492a60
test eax, eax
mov dword [esp + 0x240], 0x70000003
je 0x5101ad
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
je 0x5101ad
mov byte [esp + 0xe3], 0x47
mov edx, dword [esp + 0x300]
mov dword [edx], eax
mov ecx, dword [esp + 0x4c]
inc dword [ecx]
mov ecx, dword [esp + 0x1a8]
lea ecx, [ecx*8]
lea ecx, [ecx + ecx*2]
mov dword [eax + ecx], 0x21
mov eax, dword [edx]
mov dword [eax + ecx + 4], 0xfffffff8
mov eax, dword [edx]
mov byte [eax + ecx + 8], 0xff
mov eax, dword [edx]
mov dword [eax + ecx + 0xc], 0
mov eax, dword [edx]
mov dword [eax + ecx + 0x10], edi
mov eax, dword [edx]
mov dword [eax + ecx + 0x14], 0
mov dword [esp], edi
mov dword [esp + 0x120], edi
call fcn.00492770
test eax, eax
mov dword [esp + 0x240], 0x70000003
je 0x5101bb
mov esi, 1
mov ecx, eax
mov dword [esp + 0x12c], eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jne 0x51a29c
jmp 0x510222
mov dword [esp + 0x120], edi
mov ecx, ebx
jmp 0x5170b1
mov dword [esp + 0x12c], eax
jmp 0x510222
mov eax, dword [esp + 0x4fc]
mov dword [esp], eax
call fcn.004936c0
mov dword [esp + 0x4fc], 0
mov eax, dword [esp + 0x240]
test eax, eax
jne 0x516c06
mov ecx, eax
mov esi, 0xd
and eax, 1
xor eax, ecx
not eax
test eax, eax
mov dword [esp + 0x58], ecx
je 0x516c0a
cmp esi, 0xd
je 0x518297
xor eax, eax
test al, al
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
mov dword [esp + 0x440], ebx
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
mov eax, dword [esp + 0x2c4]
mov dword [esp + 0x54], eax
je 0x519f3a
jmp 0x518297
mov byte [esp + 0x187], 0x7e
mov ecx, dword [esp + 0x47c]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00412c70
mov eax, dword [esp + 0x504]
mov dword [esp + 0x338], eax
mov eax, dword [eax + 4]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
mov dword [esp + 0x2a8], 0
cmp eax, ecx
mov dword [esp + 0x2a4], 0
je 0x512215
xor esi, esi
mov eax, dword [esp + 0x47c]
lea ecx, [eax + 0xe8]
mov dword [esp + 0x2d0], ecx
lea edi, [eax + 0xa8]
lea ebx, [eax + 0xa4]
lea edx, [eax + 0xb0]
mov dword [esp + 0x404], eax
jmp 0x5104b4
mov ecx, dword [esp + 0x3e4]
lea eax, [ecx + 8]
mov dword [esp + 0x200], eax
mov edx, dword [ecx + 8]
imul eax, dword [esp + 0x3f8], 0x1c
lea ecx, [edx + eax]
mov dword [esp + 0x17c], ecx
mov esi, dword [edx + eax + 4]
cmp esi, 1
jne 0x510624
mov ecx, esi
not ecx
and ecx, 1
add ecx, esi
je 0x510624
cmp dword [edx + eax + 0x14], 4
jne 0x5106a8
mov dword [esp + 0x1a4], esi
mov cl, byte [esp + 0x390]
movzx ecx, cl
cmp ecx, 0xf
je 0x51077c
mov dword [esp + 0x2b0], edx
mov edi, 0xd
mov dword [esp + 0x44c], 0x30000003
mov eax, 4
cmp ecx, 0x63
mov ecx, dword [esp + 0x3f4]
mov dword [esp + 0x424], ecx
mov dword [esp + 0x474], ecx
mov ecx, dword [esp + 0x3f0]
mov dword [esp + 0x3e0], ecx
mov ecx, dword [esp + 0x3ec]
mov dword [esp + 0x3d8], ecx
mov ecx, dword [esp + 0x3f8]
mov dword [esp + 0x2e0], ecx
mov ecx, dword [esp + 0x3e8]
mov dword [esp + 0x470], ecx
je 0x517231
jmp 0x512be6
mov dword [esp + 0x1a4], esi
mov dword [esp + 0x2b0], edx
movzx edx, byte [esp + 0x348]
cmp edx, 0x36
je 0x51070e
mov eax, 8
mov ecx, 0x17
cmp edx, 0x7f
mov edx, dword [esp + 0x440]
mov dword [esp + 0x2a0], edx
mov edx, dword [esp + 0x3f4]
mov dword [esp + 0x474], edx
mov esi, dword [esp + 0x3f0]
mov edi, dword [esp + 0x3ec]
mov edx, dword [esp + 0x3f8]
mov dword [esp + 0x2e0], edx
mov edx, dword [esp + 0x3e8]
mov dword [esp + 0x470], edx
mov ebx, dword [esp + 0x45c]
je 0x518041
jmp 0x5120ad
mov dword [esp + 0x2d0], 0x30000003
mov dword [esp + 0x1a4], esi
mov dword [esp + 0x2b0], edx
mov eax, dword [esp + 0x3f4]
mov edx, eax
mov dword [esp + 0x474], eax
mov eax, dword [esp + 0x3f0]
mov dword [esp + 0x3e0], eax
mov eax, dword [esp + 0x3ec]
mov dword [esp + 0x3d8], eax
mov eax, dword [esp + 0x3f8]
mov dword [esp + 0x2e0], eax
mov eax, dword [esp + 0x3e8]
mov dword [esp + 0x470], eax
jmp 0x519c46
mov byte [esp + 0x348], 0x7f
mov eax, dword [esp + 0x17c]
mov eax, dword [eax]
mov dword [esp + 0xc8], eax
cmp eax, 3
mov ecx, dword [esp + 0x3f4]
mov dword [esp + 0x474], ecx
mov eax, dword [esp + 0x3f0]
mov dword [esp + 0x3e0], eax
mov eax, dword [esp + 0x3ec]
mov dword [esp + 0x3d8], eax
mov eax, dword [esp + 0x3f8]
mov dword [esp + 0x2e0], eax
mov eax, dword [esp + 0x3e8]
mov dword [esp + 0x470], eax
mov esi, ecx
je 0x510844
jmp 0x5108fd
mov esi, 0x14
mov cl, 0xf
mov eax, dword [edx + eax + 0x18]
mov dword [esp + 0x2b0], edx
mov eax, dword [eax]
mov dword [esp + 0x46c], eax
mov dword [esp + 0x44c], 0x30000003
mov edx, dword [esp + 0x3f0]
mov dword [esp + 0x478], edx
mov edi, dword [esp + 0x3ec]
mov dword [esp + 0x468], edi
mov eax, dword [esp + 0x3f4]
mov dword [esp + 0x464], eax
mov dword [esp + 0x424], eax
mov dword [esp + 0x474], eax
mov dword [esp + 0x3e0], edx
mov dword [esp + 0x3d8], edi
mov eax, dword [esp + 0x3f8]
mov dword [esp + 0x2e0], eax
mov eax, dword [esp + 0x3e8]
mov dword [esp + 0x470], eax
mov eax, dword [esp + 0x22c]
mov edx, dword [esp + 0x2ac]
jmp 0x512b74
mov dword [esp + 0x3e0], esi
mov eax, 7
mov byte [esp + 0x348], 0x36
mov ecx, dword [esp + 0x17c]
mov ecx, dword [ecx]
mov dword [esp + 0xc8], ecx
cmp ecx, 3
jne 0x51907b
mov esi, 2
mov eax, dword [esp + 0x264]
mov eax, dword [eax]
mov ecx, dword [esp + 0x178]
mov edx, dword [ecx]
mov ecx, dword [esp + 0x458]
mov ecx, dword [ecx]
mov edi, dword [esp + 0x17c]
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x440]
mov dword [esp], eax
call fcn.004dd150
mov dword [esp + 0x44c], eax
test eax, eax
mov ecx, dword [esp + 0x474]
mov dword [esp + 0x424], ecx
mov eax, dword [esp + 0x470]
mov dword [esp + 0x46c], eax
mov eax, dword [esp + 0x3e0]
mov dword [esp + 0x478], eax
mov eax, dword [esp + 0x3d8]
mov dword [esp + 0x468], eax
mov dword [esp + 0x464], ecx
je 0x519ae7
cmp esi, 2
je 0x517292
xor eax, eax
test al, al
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
mov edx, dword [esp + 0x424]
je 0x519ed3
jmp 0x519c46
mov ecx, 7
cmp dword [esp + 0x1a4], 0x3e
je 0x510922
mov eax, 0xe
xor edx, edx
test dl, dl
mov edx, esi
je 0x511503
jmp 0x51635a
mov edx, esi
jmp 0x51635a
mov bl, 2
inc eax
mov edx, dword [edi + ecx + 0x18]
mov esi, dword [edx]
mov dword [esp + 0x478], esi
mov edx, dword [edx + 4]
mov dword [esp + 0x468], edx
mov edx, dword [esp + 0x470]
mov dword [esp + 0x46c], edx
mov edx, dword [esp + 0x404]
mov dword [esp + 0x464], edx
mov edx, eax
or edx, 2
mov esi, eax
xor esi, 2
add esi, edx
setne dl
movzx edx, dl
cmp eax, edx
jb 0x510930
mov dword [esp + 0x44c], 0x30000003
mov byte [esp + 0x388], bl
mov eax, dword [esp + 0x404]
mov dword [esp + 0x424], eax
mov dword [esp + 0x474], eax
jmp 0x519ae7
mov edi, 9
imul eax, dword [esp + 0x2e0], 0x1c
add eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0x264]
mov esi, dword [ecx]
mov ecx, dword [esp + 0x178]
mov edx, dword [ecx]
mov ecx, dword [esp + 0x458]
mov ecx, dword [ecx]
mov dword [esp + 8], eax
mov dword [esp + 4], esi
mov eax, dword [esp + 0x440]
mov dword [esp], eax
mov dword [esp + 0x10], 0x20
mov dword [esp + 0xc], 0
call fcn.00579030
mov ecx, eax
mov dword [esp + 0x2d0], ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete al
movzx eax, al
cmp ecx, eax
mov eax, dword [esp + 0x470]
mov dword [esp + 0x46c], eax
mov eax, dword [esp + 0x3e0]
mov dword [esp + 0x478], eax
mov eax, dword [esp + 0x3d8]
mov dword [esp + 0x468], eax
mov eax, dword [esp + 0x474]
mov dword [esp + 0x464], eax
mov edx, eax
mov esi, dword [esp + 0x284]
mov dword [esp + 0x44c], ecx
mov dword [esp + 0x424], eax
jne 0x519c46
cmp edi, 4
jne 0x510c01
mov eax, edi
or eax, 2
xor edi, 2
add edi, eax
je 0x510c0d
mov byte [esp + 0x3ac], 0x2d
mov eax, dword [esp + 0x25c]
lea ecx, [eax + 1]
cmp ecx, esi
jb 0x510c19
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
mov dword [esp + 0x26c], ecx
mov dword [esp + 0x274], esi
jne 0x518e54
jmp 0x51154c
mov dword [esp + 0x284], esi
jmp 0x519ae7
mov dword [esp + 0x284], esi
jmp 0x519ae7
mov dword [esp + 0x26c], ecx
jmp 0x51154c
mov eax, 0xe
mov ecx, dword [esp + 0x214]
mov edx, dword [ecx]
cmp edx, 0x21
seta cl
mov esi, edx
and esi, 1
inc esi
xor esi, edx
sete dl
cmp dword [esp + 0xa8], 2
jne 0x510f93
or cl, dl
mov ecx, dword [esp + 0x470]
mov dword [esp + 0x46c], ecx
mov dword [esp + 0x478], edi
mov dword [esp + 0x468], ebx
jne 0x510fb4
jmp 0x51708b
mov ecx, dword [esp + 0x470]
mov dword [esp + 0x46c], ecx
mov dword [esp + 0x478], edi
mov dword [esp + 0x468], ebx
jmp 0x51708b
mov eax, dword [esp + 0x2e0]
imul eax, eax, 0x1c
mov edx, dword [esp + 0x2b0]
mov ecx, dword [edx + eax + 0x14]
mov eax, dword [edx + eax + 0x18]
mov edx, dword [esp + 0x434]
mov dword [esp + 0xc], edx
mov dword [esp + 4], ecx
mov dword [esp], eax
mov dword [esp + 8], 0x34
call fcn.0064be40
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x5110ba
mov edx, 0xf
mov bl, byte [esp + 0x370]
movzx ecx, bl
cmp ecx, 0x28
jne 0x5110cd
mov dword [esp + 0x2d0], eax
xor eax, eax
mov esi, dword [esp + 0x3bc]
mov edi, dword [esp + 0x394]
jmp 0x51107d
mov bl, 0x28
xor ecx, eax
setne cl
movzx ecx, cl
add eax, ecx
mov ecx, dword [esp + 0x48c]
mov edx, dword [ecx]
mov dword [esi], edx
mov edx, dword [ecx + 4]
mov dword [edi], edx
mov edx, dword [ecx + 8]
mov dword [esp + 0x43c], edx
mov ecx, dword [esp + 0x444]
mov dword [ecx], edx
mov ecx, dword [esp + 0x474]
mov dword [esp + 0x454], ecx
mov ecx, 3
sub ecx, eax
mov edx, eax
xor edx, ecx
setne dl
movzx edx, dl
cmp eax, edx
jb 0x511040
mov byte [esp + 0x370], bl
mov eax, dword [esp + 0x2d0]
mov dword [esp + 0x44c], eax
mov eax, dword [esp + 0x474]
mov dword [esp + 0x424], eax
jmp 0x518349
mov dword [esp + 0x2d0], eax
mov edx, dword [esp + 0x474]
jmp 0x519c46
mov dword [esp + 0x44c], eax
mov ecx, dword [esp + 0x474]
mov dword [esp + 0x424], ecx
jmp 0x5182b9
mov eax, dword [esp + 0x504]
mov eax, dword [eax + 8]
imul ecx, dword [esp + 0x2e0], 0x1c
mov eax, dword [eax + ecx + 0x18]
mov dword [esp + 0x414], eax
mov eax, dword [eax]
mov dword [esp + 0x418], eax
mov edi, dword [esp + 0x450]
mov dword [edi], eax
mov eax, dword [esp + 0x208]
mov eax, dword [eax]
cmp eax, 2
sete cl
imul eax, eax
and eax, 3
cmp eax, 3
sete dl
or dl, cl
mov eax, dword [esp + 0x214]
mov ecx, dword [eax]
cmp ecx, 0x21
sete al
mov esi, ecx
and esi, 1
inc esi
xor esi, ecx
sete cl
movzx edx, dl
cmp edx, 1
mov ebx, dword [esp + 0x45c]
jne 0x511175
mov esi, 7
or al, cl
mov dword [esp + 0x140], edi
jne 0x5161f9
mov dword [esp + 0x140], edi
jmp 0x516247
mov eax, 0x15
mov byte [esp + 0x3a0], 0x19
mov ecx, dword [esp + 0x208]
mov edx, dword [ecx]
cmp edx, 6
mov edi, dword [esp + 0x43c]
ja 0x5112be
mov esi, 4
mov ecx, edx
mov dword [esp + 0x18c], edx
imul ecx, ecx
and ecx, 3
cmp ecx, 2
mov dword [esp + 0x250], edi
mov ecx, dword [esp + 0x454]
mov dword [esp + 0x258], ecx
mov ecx, dword [esp + 0x440]
jb 0x518635
jmp 0x515b36
mov dword [esp + 0x18c], edx
mov dword [esp + 0x250], edi
mov ecx, dword [esp + 0x454]
mov dword [esp + 0x258], ecx
mov ecx, dword [esp + 0x440]
jmp 0x515b36
mov eax, 8
cmp ecx, 0x77
mov ecx, dword [esp + 0x18c]
mov edi, dword [esp + 0x3e0]
jne 0x50f94d
mov byte [esp + 0x374], 0xf
cmp ecx, 7
jne 0x51135b
mov eax, dword [esp + 0x214]
cmp dword [eax], 0x63
mov eax, dword [esp + 0x3d8]
ja 0x511372
cmp dword [esp + 0x250], 0
mov ecx, dword [esp + 0x470]
mov dword [esp + 0x46c], ecx
mov dword [esp + 0x478], edi
mov dword [esp + 0x468], eax
mov eax, dword [esp + 0x258]
mov dword [esp + 0x464], eax
je 0x5113aa
jmp 0x519ae7
mov eax, dword [esp + 0x470]
mov dword [esp + 0x46c], eax
mov dword [esp + 0x478], edi
jmp 0x511389
mov ecx, dword [esp + 0x470]
mov dword [esp + 0x46c], ecx
mov dword [esp + 0x478], edi
jmp 0x511390
mov eax, dword [esp + 0x3d8]
mov dword [esp + 0x468], eax
mov eax, dword [esp + 0x258]
mov dword [esp + 0x464], eax
jmp 0x519ae7
mov eax, dword [esp + 0x394]
mov eax, dword [eax]
mov ecx, dword [esp + 0x444]
mov dword [ecx], eax
mov eax, dword [esp + 0x470]
mov dword [esp + 0x46c], eax
mov eax, dword [esp + 0x3e0]
mov dword [esp + 0x478], eax
jmp 0x511389
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
jmp 0x519ae7
mov eax, 0xe
mov bl, 0x4a
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 2
adc ecx, 0
mov edx, 3
sub edx, ecx
xor edx, ecx
setne dl
movzx edx, dl
cmp ecx, edx
jb 0x511470
mov dword [esp + 0x26c], 0
mov byte [esp + 0x3a8], bl
mov edx, dword [esp + 0x474]
mov dword [esp + 0x274], esi
cmp eax, 0xb
je 0x5114d3
xor eax, eax
test al, al
jne 0x5114d3
mov dword [esp + 0x474], edx
mov esi, dword [esp + 0x274]
jmp 0x51154c
mov esi, edx
mov eax, 0x13
mov ecx, dword [esp + 0x440]
mov ecx, dword [ecx]
mov dword [esp + 0x180], ecx
test ecx, ecx
je 0x511501
mov ecx, 0xd
xor edx, edx
test dl, dl
mov edx, esi
je 0x513cf4
mov edx, esi
cmp eax, 0xe
je 0x5109a8
mov dword [esp + 0x404], esi
mov eax, dword [esp + 0x190]
mov edi, dword [eax]
mov esi, dword [esp + 0x26c]
mov ecx, esi
shl ecx, 6
mov ebx, edi
add ebx, ecx
je 0x5115bc
mov eax, ebx
imul eax, eax
and eax, 3
cmp eax, 2
je 0x5115bc
movzx edx, byte [esp + 0x380]
cmp edx, 0x10
je 0x5115f2
mov eax, 7
cmp edx, 0x64
jne 0x51160a
mov dword [esp + 0x1c8], ebx
mov dword [esp + 0x41c], edi
mov eax, dword [esp + 0x404]
mov dword [esp + 0x274], eax
mov dword [esp + 0x284], eax
mov dword [esp + 0x230], eax
mov dword [esp + 0x25c], esi
jmp 0x519019
mov dword [esp + 0x1c8], ebx
mov byte [esp + 0x380], 0x10
cmp dword [edi + ecx + 0x24], 0
jne 0x511631
mov dword [esp + 0x404], 0x13
cmp eax, 0xffffffff
setne al
movzx eax, al
add esi, eax
mov eax, dword [esp + 0x41c]
mov eax, dword [eax + ebx + 0x2c]
mov dword [edi + 0x1c8], eax
mov dword [esp], edi
call fcn.00412100
mov dword [esp], edi
call fcn.0042b9c0
mov eax, dword [esp + 0x400]
mov edx, dword [eax]
mov eax, esi
and eax, 1
xor eax, esi
cmp eax, 0xffffffff
setne cl
movzx ecx, cl
cmp esi, ecx
jb 0x511820
mov ecx, dword [esp + 0x440]
mov edi, dword [esp + 0x404]
jmp 0x518e88
mov eax, 0x1b
mov byte [esp + 0x354], 0x1e
mov edx, dword [esp + 0x108]
cmp edx, 2
sete cl
imul edx, edx
and edx, 3
cmp edx, 2
sete dl
or dl, cl
movzx ecx, dl
cmp ecx, 1
jne 0x5119a2
mov ecx, dword [esp + 0x214]
mov ecx, dword [ecx]
test ecx, ecx
jne 0x5119a2
mov edx, 3
sub edx, ecx
xor edx, ecx
jne 0x51910a
cmp eax, 0xb
jne 0x5119b6
mov ecx, 3
sub ecx, eax
xor ecx, eax
jne 0x514ac5
mov eax, dword [esp + 0x200]
mov eax, dword [eax]
mov ecx, dword [esp + 0x2e0]
imul ecx, ecx, 0x1c
mov edx, dword [eax + ecx + 0x14]
mov eax, dword [eax + ecx + 0x18]
lea ecx, [esp + 0x480]
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00627650
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x511a53
xor eax, eax
mov edx, dword [esp + 0x1f8]
mov esi, dword [esp + 0x1f4]
jmp 0x511a2b
mov ecx, eax
and ecx, 1
xor ecx, eax
cmp ecx, 0xffffffff
setne cl
movzx ecx, cl
add eax, ecx
xor esi, esi
mov edx, dword [esp + 0x480]
mov ecx, eax
imul ecx, ecx
and ecx, 3
test eax, eax
je 0x511a10
cmp ecx, 2
je 0x511a10
mov dword [esp + 0x1f4], esi
mov dword [esp + 0x1f8], edx
mov ebx, dword [esp + 0x50]
jmp 0x511cd3
mov dword [esp + 0x2d0], eax
mov edx, dword [esp + 0x474]
jmp 0x519c46
mov eax, dword [esp + 0x200]
mov eax, dword [eax]
imul ecx, ecx, 0x1c
mov eax, dword [eax + ecx + 0x18]
mov dword [esp + 0x280], eax
mov dword [esp + 4], 0x40
mov dword [esp], 1
call fcn.00493840
test eax, eax
jne 0x511abb
mov edx, eax
or edx, 2
mov ecx, eax
xor ecx, 2
add ecx, edx
je 0x511abb
mov dword [esp + 0x2d0], 0x70000003
mov byte [esp + 0x37c], 0x4a
jmp 0x511d31
mov byte [esp + 0x37c], 0x4a
movzx ecx, byte [esp + 0x3d0]
cmp ecx, 0x1f
mov esi, dword [esp + 0x1f8]
mov ebx, dword [esp + 0x1f4]
je 0x511b6e
mov edx, 0x17
cmp ecx, 0x2c
jne 0x511c3f
mov byte [esp + 0x3d0], 0x1f
mov ecx, dword [esp + 0x280]
movsd xmm0, qword [ecx]
movsd qword [eax], xmm0
movsd xmm0, qword [ecx + 8]
movsd qword [eax + 8], xmm0
movsd xmm0, qword [ecx + 0x10]
movsd qword [eax + 0x10], xmm0
movsd xmm0, qword [ecx + 0x18]
movsd qword [eax + 0x18], xmm0
mov edx, dword [ecx + 0x20]
mov dword [eax + 0x20], edx
mov edx, dword [ecx + 0x24]
mov dword [eax + 0x24], edx
mov edx, dword [ecx + 0x28]
mov dword [eax + 0x28], edx
mov edx, dword [ecx + 0x2c]
mov dword [eax + 0x2c], edx
mov dword [eax + 0x30], 0
mov edx, dword [ecx + 0x30]
mov dword [eax + 0x34], edx
mov ecx, dword [ecx + 0x34]
mov dword [eax + 0x38], ecx
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x1f8], eax
mov dword [esp + 0x1f4], eax
mov dword [esp + 0x27c], eax
jmp 0x511cd3
mov dword [esp + 0x27c], eax
xor eax, eax
jmp 0x511bf8
mov edi, 1
mov byte [esp + 0x3d0], 0x2c
xor ecx, eax
setne cl
movzx ecx, cl
add eax, ecx
mov edx, dword [esp + 0x280]
movsd xmm0, qword [edx]
mov ebx, dword [esp + 0x27c]
movsd qword [ebx], xmm0
movsd xmm0, qword [edx + 8]
movsd qword [ebx + 8], xmm0
movsd xmm0, qword [edx + 0x10]
movsd qword [ebx + 0x10], xmm0
movsd xmm0, qword [edx + 0x18]
movsd qword [ebx + 0x18], xmm0
mov ecx, dword [edx + 0x20]
mov dword [ebx + 0x20], ecx
mov ecx, dword [edx + 0x24]
mov dword [ebx + 0x24], ecx
mov ecx, dword [edx + 0x28]
mov dword [ebx + 0x28], ecx
mov ecx, dword [edx + 0x2c]
mov dword [ebx + 0x2c], ecx
mov dword [ebx + 0x30], 0
mov ecx, dword [edx + 0x30]
mov dword [ebx + 0x34], ecx
mov ecx, dword [edx + 0x34]
mov dword [ebx + 0x38], ecx
mov esi, ebx
mov ecx, 3
sub ecx, eax
mov edx, eax
xor edx, ecx
setne dl
movzx edx, dl
cmp eax, edx
jb 0x511b80
mov dword [esp + 0x1f4], ebx
mov dword [esp + 0x1f8], esi
mov eax, 3
sub eax, edi
xor eax, edi
setne al
movzx eax, al
cmp edi, eax
mov ebx, dword [esp + 0x50]
je 0x511cd3
jmp 0x512a7e
mov dword [esp + 0x27c], eax
mov ebx, dword [esp + 0x50]
cmp edx, 9
jne 0x511c5e
imul edx, edx
and edx, 3
cmp edx, 2
jb 0x50f2ee
mov byte [esp + 0x3d0], 0x12
mov ecx, dword [esp + 0x280]
movsd xmm0, qword [ecx]
mov edx, dword [esp + 0x27c]
movsd qword [edx], xmm0
movsd xmm0, qword [ecx + 8]
movsd qword [edx + 8], xmm0
movsd xmm0, qword [ecx + 0x10]
movsd qword [edx + 0x10], xmm0
movsd xmm0, qword [ecx + 0x18]
movsd qword [edx + 0x18], xmm0
mov eax, dword [ecx + 0x20]
mov dword [edx + 0x20], eax
mov eax, dword [ecx + 0x24]
mov dword [edx + 0x24], eax
mov eax, dword [ecx + 0x28]
mov dword [edx + 0x28], eax
mov eax, dword [ecx + 0x2c]
mov dword [edx + 0x2c], eax
mov dword [edx + 0x30], 0
mov eax, dword [ecx + 0x30]
mov dword [edx + 0x34], eax
mov eax, dword [ecx + 0x34]
mov dword [edx + 0x38], eax
mov dword [esp + 0x1f8], edx
mov dword [esp + 0x1f4], edx
mov eax, dword [esp + 0x1f8]
lea ecx, [eax + 0x34]
mov dword [esp + 0x1d4], ecx
cmp dword [eax + 0x34], 0
jne 0x511d01
mov dword [esp + 0x50], ebx
mov eax, dword [esp + 0x1f4]
mov dword [esp + 0x278], eax
jmp 0x511fa3
lea eax, [eax + 0x38]
mov dword [esp + 0x148], eax
mov dword [esp + 0x24c], 0
mov dword [esp + 0x50], ebx
mov ebx, dword [esp + 0x440]
mov eax, dword [esp + 0x1f4]
mov dword [esp + 0x278], eax
jmp 0x511d44
mov dword [esp + 0x27c], eax
mov edx, dword [esp + 0x474]
jmp 0x519c46
mov dword [esp + 0x2a0], ebx
mov esi, 0x15
mov eax, dword [esp + 0x148]
mov eax, dword [eax]
mov ecx, dword [esp + 0x24c]
mov eax, dword [eax + ecx*4]
mov edx, dword [esp + 0x47c]
mov ecx, dword [edx]
mov edx, dword [edx + 4]
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], ecx
call fcn.00427270
mov ebx, eax
test ebx, ebx
je 0x511df0
xor eax, eax
test al, al
jne 0x511df0
movzx eax, byte [esp + 0x340]
cmp eax, 0x3e
mov esi, dword [esp + 0x20c]
jne 0x511e11
mov dword [esp + 0x1b0], ebx
mov eax, dword [esp + 0x24c]
mov dword [esp + 0x1d0], eax
mov ebx, dword [esp + 0x2a0]
jmp 0x5159fc
cmp ecx, 0xa
je 0x511f97
mov dword [esp + 0x440], eax
xor eax, eax
test al, al
jne 0x515d74
mov eax, 0x11
mov byte [esp + 0x398], 0x35
mov ecx, 3
mov edx, dword [esp + 0x1d0]
sub ecx, edx
xor ecx, edx
setne cl
movzx ecx, cl
add ecx, edx
mov dword [esp + 0x24c], ecx
mov edx, dword [esp + 0x1d4]
cmp ecx, dword [edx]
jb 0x51614f
xor ecx, ecx
test cl, cl
je 0x511fa3
jmp 0x51614f
mov dword [esp + 0x440], eax
jmp 0x515d74
mov edi, dword [esp + 0x278]
test edi, edi
je 0x512067
mov eax, 0xc
mov ecx, edi
imul ecx, ecx
and ecx, 3
cmp ecx, 2
je 0x512067
xor esi, esi
cmp eax, 0xc
je 0x512052
mov dword [esp + 0x278], edi
mov ecx, 8
mov eax, dword [esp + 0x480]
mov dword [esp + 0x10c], eax
test eax, eax
mov esi, dword [esp + 0x3e0]
mov edi, dword [esp + 0x3d8]
mov ebx, dword [esp + 0x45c]
je 0x517161
mov eax, 0xa
xor edx, edx
test dl, dl
jne 0x517161
mov dword [esp + 0x45c], ebx
mov dword [esp + 0x3d8], edi
cmp eax, 8
je 0x510817
imul eax, eax
and eax, 3
cmp eax, 3
je 0x510817
mov eax, 0x1b
mov ebx, dword [esp + 0x314]
movzx ecx, bl
cmp ecx, 0x21
je 0x512144
mov dword [esp + 0x3e0], esi
cmp ecx, 0x26
jne 0x512150
mov esi, 0x16
mov al, 0x26
mov dword [esp + 0x314], eax
mov eax, dword [esp + 0x10c]
mov dword [esp], eax
call fcn.00627720
mov dword [esp + 0x480], 0
cmp esi, 6
jne 0x517189
mov eax, esi
not eax
and eax, 1
add eax, esi
jne 0x513967
jmp 0x517189
mov dword [esp + 0x3e0], esi
jmp 0x516d87
xor esi, esi
mov edi, dword [esp + 0x10c]
jmp 0x512183
xor ebx, ebx
mov eax, esi
imul eax, eax
and eax, 3
cmp eax, 2
adc esi, 0
mov dword [esp], edi
call fcn.00627720
mov dword [esp + 0x480], 0
mov eax, 3
sub eax, esi
xor eax, esi
setne al
movzx eax, al
cmp esi, eax
jb 0x512160
mov dword [esp + 0x314], ebx
jmp 0x516dbd
xor ecx, eax
setne cl
movzx ecx, cl
add eax, ecx
mov ecx, dword [esp + 0x470]
mov dword [esp + 0x46c], ecx
mov dword [esp + 0x478], esi
mov dword [esp + 0x468], edi
mov ebx, dword [esp + 0x474]
mov ecx, 3
sub ecx, eax
mov edx, eax
xor edx, ecx
setne dl
movzx edx, dl
cmp eax, edx
jb 0x5121b0
mov dword [esp + 0x464], ebx
jmp 0x519ae7
mov eax, esi
and eax, 1
inc eax
xor eax, esi
mov ebx, ecx
mov dword [esp + 0x440], ecx
jne 0x5139ff
mov ecx, dword [esp + 0x47c]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00412cb0
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
lea ecx, [esp + 0x4b0]
mov dword [esp + 0x174], ecx
mov dword [esp + 0x4b0], eax
mov eax, dword [esp + 0x264]
mov eax, dword [eax]
lea ecx, [esp + 0x4b4]
mov dword [esp + 0x170], ecx
mov dword [esp + 0x4b4], eax
lea eax, [esp + 0x4b8]
mov dword [esp + 0x16c], eax
mov dword [esp + 0x4b8], 0xfffffffe
lea ecx, [esp + 0x4a8]
mov dword [esp + 0x244], ecx
lea eax, [esp + 0x4f8]
mov dword [esp + 0x10], eax
lea eax, [esp + 0x4c0]
mov dword [esp + 0xc], eax
mov dword [esp], ecx
mov dword [esp + 8], 0x1c
mov dword [esp + 4], 0
call fcn.005938f0
test eax, eax
jne 0x51231b
mov al, 0x6e
movzx eax, al
cmp eax, 0x2b
jne 0x512341
lea eax, [esp + 0x4a8]
mov dword [esp + 0x244], eax
mov esi, 0xa
mov eax, dword [esp + 0x4c0]
mov edi, 0x7000002f
cmp eax, 0x636f6964
jne 0x5122ff
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
test ecx, ecx
jne 0x512370
mov eax, dword [esp + 0x2a8]
mov edx, eax
mov dword [esp + 0x2ac], eax
mov eax, dword [esp + 0x440]
jmp 0x517c27
mov dword [esp + 0x44c], eax
mov ecx, 4
mov eax, dword [esp + 0x2a8]
mov dword [esp + 0x424], eax
mov dword [esp + 0x2ac], eax
jmp 0x51241a
lea eax, [esp + 0x4a8]
mov dword [esp + 0x244], eax
mov eax, dword [esp + 0x4c0]
cmp eax, 0x636f6964
jne 0x5123fa
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
je 0x5123fa
lea eax, [esp + 0x4a8]
mov dword [esp + 0x244], eax
mov esi, 0x10
mov byte [esp + 0xf3], 0x1c
lea eax, [esp + 0x4d4]
mov ecx, dword [esp + 0x47c]
lea ecx, [ecx + 0x1b0]
mov dword [esp + 4], eax
mov dword [esp], ecx
mov dword [esp + 8], 8
call fcn.007c51d0
mov ecx, dword [esp + 0x2a4]
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
sete al
movzx eax, al
cmp ecx, eax
mov eax, dword [esp + 0x2a8]
mov dword [esp + 0x2ac], eax
mov dword [esp + 0x2d0], ecx
mov edx, eax
mov dword [esp + 0x44c], ecx
mov dword [esp + 0x424], eax
jne 0x519c46
jmp 0x512573
mov dword [esp + 0x2d0], 0x7000002f
mov eax, dword [esp + 0x2a8]
mov dword [esp + 0x2ac], eax
mov edx, eax
jmp 0x519c46
cmp ecx, 4
je 0x517292
xor eax, eax
test al, al
mov eax, dword [esp + 0x44c]
jne 0x512560
mov eax, dword [esp + 0x34c]
mov eax, dword [eax]
mov ecx, dword [esp + 0x460]
shl ecx, 6
mov edx, dword [eax + ecx + 0x3c]
mov dword [esp + 0x404], edx
mov edx, dword [eax + ecx + 0x34]
mov dword [esp + 0x2d0], edx
mov edx, dword [eax + ecx + 0x2c]
mov dword [esp + 0x2cc], edx
mov edx, dword [eax + ecx + 0x28]
mov dword [esp + 0x2c8], edx
mov edx, dword [eax + ecx + 0x24]
mov dword [esp + 0x2c0], edx
mov edx, dword [eax + ecx + 0x20]
mov dword [esp + 0x2bc], edx
mov esi, dword [eax + ecx + 0x1c]
mov edx, dword [eax + ecx + 0x18]
mov edi, dword [eax + ecx]
mov dword [esp + 0x2b8], edi
mov edi, dword [eax + ecx + 4]
mov dword [esp + 0x2a0], edi
mov ebx, dword [eax + ecx + 0xc]
mov ecx, dword [esi]
mov edx, dword [edx]
mov byte [esp + 0x430], 0x6e
mov eax, dword [esp + 0x458]
mov esi, dword [eax]
mov eax, dword [esp + 0x47c]
mov edi, dword [eax]
mov dword [esp + 0x2b4], edi
mov eax, dword [eax + 4]
mov edi, dword [esp + 0x420]
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x404]
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x2d0]
mov dword [esp + 0x34], edi
mov edi, dword [esp + 0x2cc]
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x2c8]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x2c0]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x2bc]
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x14], esi
mov ecx, dword [esp + 0x2a0]
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], ebx
mov ecx, dword [esp + 0x2b8]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2b4]
mov dword [esp], eax
mov dword [esp + 0x18], 0xffffffff
jmp 0x5154c5
mov dword [esp + 0x2d0], eax
mov edx, dword [esp + 0x424]
jmp 0x519c46
cmp esi, 0x10
mov ecx, dword [esp + 0x21c]
je 0x512595
cmp eax, 6
je 0x512677
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
je 0x512677
mov esi, 0xc
mov byte [esp + 0xf3], 0x75
mov byte [esp + 0x1c7], 0xa
mov ecx, dword [esp + 0x47c]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 4], ecx
mov dword [esp], eax
mov edi, edx
call fcn.004124f0
mov edx, edi
mov eax, dword [esp + 0x178]
cmp dword [eax], 0
jne 0x519638
jmp 0x5127f7
mov ebx, dword [esp + 0x440]
mov dword [esp + 0x474], edx
jmp 0x5180ec
mov eax, dword [esp + 0x2d4]
mov dword [esp + 0x45c], eax
je 0x514ac5
mov eax, 0xb
mov ecx, dword [esp + 0x21c]
mov dword [ecx], 0
mov edx, 1
mov dword [esp + 0x45c], edx
mov dword [esp + 0x21c], ecx
cmp eax, 0xb
je 0x514ac5
xor eax, eax
test al, al
je 0x51318c
jmp 0x514ac5
mov byte [esp + 0x1c7], 0xa
mov byte [esp + 0x1ff], 0x60
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
mov ecx, dword [esp + 0x174]
mov dword [ecx], eax
mov eax, dword [esp + 0x264]
mov eax, dword [eax]
mov ecx, dword [esp + 0x170]
mov dword [ecx], eax
mov eax, dword [esp + 0x16c]
mov dword [eax], 0xffffffce
lea eax, [esp + 0x4ec]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x244]
mov dword [esp], eax
call fcn.005953b0
test eax, eax
jne 0x512759
mov edi, 0x14
mov ecx, eax
and ecx, 1
xor ecx, eax
mov dword [esp + 0x438], eax
not ecx
test ecx, ecx
jne 0x518a58
jmp 0x512760
mov dword [esp + 0x438], eax
xor edi, edi
mov ebx, dword [esp + 0x2ac]
mov ecx, dword [esp + 0x424]
mov edx, dword [esp + 0x44c]
jmp 0x5127a7
mov esi, 0x15
inc edi
mov ecx, dword [esp + 0x47c]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00412560
mov edx, dword [esp + 0x438]
mov ecx, ebx
mov eax, edi
imul eax, eax
and eax, 3
test edi, edi
je 0x512780
cmp eax, 3
je 0x512780
mov dword [esp + 0x424], ecx
mov edi, dword [esp + 0x3c0]
cmp esi, 7
jne 0x5127eb
mov dword [esp + 0x44c], edx
mov dword [edi], 3
mov dword [esp + 0x3c0], edi
mov ebx, dword [esp + 0x440]
jmp 0x5155e4
mov dword [esp + 0x3c0], edi
jmp 0x51a0d8
mov eax, 0xb
mov esi, dword [esp + 0x440]
test esi, esi
jne 0x5114b8
mov ecx, 9
mov edi, edx
mov edx, esi
and edx, 1
xor edx, esi
not edx
test edx, edx
mov edx, edi
je 0x5114b8
cmp ecx, 9
jne 0x512853
imul ecx, ecx
and ecx, 3
cmp ecx, 2
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
mov dword [esp + 0x474], edx
jb 0x512a4f
mov dword [esp + 0x474], edx
jmp 0x514ac5
mov esi, 1
mov byte [esp + 0x186], 0x52
mov edi, dword [esp + 0x180]
mov eax, dword [edi + 0xc]
mov dword [esp + 0x100], eax
mov eax, dword [eax]
cmp eax, 0xffffffce
je 0x51294e
xor ecx, ecx
cmp eax, 0xf
jne 0x5129b5
mov edx, eax
and edx, 1
xor edx, eax
not edx
test edx, edx
mov edx, dword [esp + 0x3fc]
mov esi, dword [esp + 0xd4]
mov bl, byte [esp + 0x3c4]
jne 0x51651c
jmp 0x5129f2
mov edx, dword [esp + 0x3fc]
mov esi, dword [esp + 0xd4]
mov bl, byte [esp + 0x3c4]
jmp 0x5129f2
mov byte [esp + 0x3c4], bl
test ecx, ecx
jne 0x512a0a
mov byte [esp + 0x186], 0x52
mov ecx, dword [esp + 0x100]
test ecx, ecx
je 0x512a48
mov esi, 0x18
xor eax, eax
test al, al
mov dword [esp + 0x2dc], ecx
je 0x50f813
jmp 0x512a4f
mov dword [esp + 0x2dc], ecx
mov eax, dword [esp + 0x47c]
mov dword [eax + 0x1c0], 1
mov dword [esp + 0x438], 0
mov eax, dword [esp + 0x2c8]
mov dword [esp + 0x450], eax
jmp 0x516a95
mov esi, 5
mov eax, dword [esp + 0x4f8]
mov ecx, dword [esp + 0x4fc]
lea edx, [esp + 0x500]
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.0062d620
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x512b4a
mov dword [esp + 0x2ac], edx
mov dword [esp + 0x22c], eax
mov byte [esp + 0x390], cl
cmp esi, 5
je 0x517292
mov eax, esi
and eax, 1
inc eax
xor eax, esi
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
mov edx, dword [esp + 0x424]
jne 0x519ae7
jmp 0x519c46
mov eax, dword [esp + 0x500]
cmp dword [eax], 0
jne 0x512ca0
mov eax, 2
mov dword [esp + 0x438], 0
cmp eax, 2
je 0x512760
xor eax, eax
imul edx, dword [esp + 0x2e0], 0x1c
mov bh, byte [esp + 0x390]
jmp 0x512c60
mov ecx, 8
mov bh, 0x63
cmp esi, 0xffffffff
setne bl
movzx esi, bl
add eax, esi
mov esi, dword [esp + 0x2b0]
mov esi, dword [esi + edx + 0x18]
mov esi, dword [esi]
mov dword [esp + 0x46c], esi
mov esi, dword [esp + 0x3e0]
mov dword [esp + 0x478], esi
mov esi, dword [esp + 0x3d8]
mov dword [esp + 0x468], esi
mov esi, dword [esp + 0x474]
mov dword [esp + 0x464], esi
mov esi, eax
and esi, 1
xor esi, eax
cmp esi, 0xffffffff
setne bl
movzx edi, bl
cmp eax, edi
jb 0x512c10
mov byte [esp + 0x390], bh
mov esi, dword [esp + 0x50]
cmp ecx, 8
jne 0x50eebd
imul ecx, ecx
and ecx, 3
cmp ecx, 2
mov dword [esp + 0x50], esi
jb 0x519ae7
jmp 0x50eebd
mov dword [esp + 0x460], eax
mov eax, dword [esp + 0x47c]
lea ecx, [eax + 0xa4]
lea edx, [eax + 0xa8]
lea esi, [eax + 0x1b8]
mov bl, 1
xor edi, edi
mov bh, byte [esp + 0x273]
mov al, byte [esp + 0x2db]
mov ah, byte [esp + 0x206]
jmp 0x512e4c
mov byte [esp + 0x40c], 0x14
mov byte [esp + 0x430], 0x6e
mov byte [esp + 0x35c], 0x57
mov byte [esp + 0x38c], 0x29
mov byte [esp + 0x350], 0x2e
mov byte [esp + 0x2fe], 0x21
mov bh, 0x5e
mov byte [esp + 0x368], 0x7a
mov byte [esp + 0x3c8], 4
mov byte [esp + 0x428], 0x16
mov byte [esp + 0x32c], 0x2a
mov byte [esp + 0x3a4], 0x24
mov eax, 3
sub eax, edi
xor eax, edi
setne al
movzx eax, al
add edi, eax
mov byte [esp + 0x2fa], 0xa
mov byte [esp + 0x2fd], 0x1e
mov dword [esp + 0x3cc], ecx
mov dword [esp + 0x3fc], edx
mov dword [esp + 0x3c0], esi
mov byte [esp + 0x2ea], 0x7d
mov byte [esp + 0x358], 0xc
mov byte [esp + 0x30b], 0xe
mov byte [esp + 0x2e9], 0x6a
mov byte [esp + 0x2f2], 0x11
mov byte [esp + 0x30c], 0x3f
mov byte [esp + 0x378], 2
mov byte [esp + 0x31c], 0x2f
mov byte [esp + 0x364], 0xf
mov al, 0x20
mov byte [esp + 0x2eb], 0x32
mov byte [esp + 0x30a], 0x3a
mov byte [esp + 0x324], 0x18
mov byte [esp + 0x3c4], 0x26
mov byte [esp + 0x39c], 0x5c
mov byte [esp + 0x3b0], 0x49
mov byte [esp + 0x307], 0x1a
mov byte [esp + 0x334], 0x7c
mov byte [esp + 0x2f9], 3
mov byte [esp + 0x308], 9
mov byte [esp + 0x320], 1
mov byte [esp + 0x328], 0x22
mov byte [esp + 0x310], 0x3b
mov byte [esp + 0x2e8], 8
mov ah, 0x79
mov byte [esp + 0x2f3], 1
mov byte [esp + 0x3b8], 2
mov byte [esp + 0x2fb], 0xe
mov byte [esp + 0x309], 0x5e
test edi, edi
je 0x512ce0
test bl, bl
je 0x512ce0
mov byte [esp + 0x2db], al
mov byte [esp + 0x273], bh
mov ecx, dword [esp + 0x460]
mov dword [esp + 0x2d4], 0
mov dword [esp + 0x438], 0
xor esi, esi
mov edx, dword [esp + 0x48c]
mov dword [esp + 0xfc], edx
test edx, edx
mov edi, dword [esp + 0x2ac]
je 0x512f3a
mov byte [esp + 0x206], ah
movzx eax, ah
cmp eax, 0x79
jne 0x512f61
mov eax, 0xd
mov byte [esp + 0x206], 0x4a
mov edx, dword [ecx + 8]
mov dword [esp + 0xf8], ecx
mov dword [esp + 0xc0], edx
mov ecx, esi
mov dword [esp + 0x460], esi
shl ecx, 6
mov edx, dword [edx + ecx + 0x10]
mov dword [esp + 0x44c], 0x70000031
test edx, edx
jne 0x512f8b
mov ecx, 4
mov esi, edx
or esi, 2
xor edx, 2
add edx, esi
mov dword [esp + 0x424], edi
je 0x51424c
cmp ecx, 4
jne 0x512f97
imul ecx, ecx
and ecx, 3
cmp ecx, 2
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x2d0], eax
mov edx, dword [esp + 0x78]
jb 0x512fab
jmp 0x519c46
mov dword [esp + 0x2d0], 0x70000031
mov dword [esp + 0xf8], ecx
mov dword [esp + 0x460], esi
mov byte [esp + 0x206], ah
mov edx, edi
jmp 0x519c46
mov dword [esp + 0xf8], ecx
mov dword [esp + 0x460], esi
mov eax, 0x12
mov dword [esp + 0x44c], 0x70000031
mov dword [esp + 0x424], edi
jmp 0x5160af
mov dword [esp + 0x424], edi
jmp 0x51424c
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x2d0], eax
mov edx, dword [esp + 0x78]
jmp 0x519c46
mov eax, dword [esp + 0x460]
shl eax, 6
mov ecx, dword [esp + 0xc0]
mov eax, dword [ecx + eax + 0x18]
mov dword [esp + 0x70], eax
test eax, eax
je 0x51318c
mov eax, 0x16
xor ecx, ecx
test cl, cl
je 0x513a86
jmp 0x51318c
movzx eax, byte [esp + 0x2e8]
cmp eax, 8
jne 0x51302e
mov eax, 0x16
mov bl, 8
mov ecx, dword [esp + 0x460]
shl ecx, 6
mov edx, dword [esp + 0xc0]
cmp dword [edx + ecx + 0x1c], 0
mov edi, dword [esp + 0x3e0]
jne 0x51308a
mov bl, 0x3e
mov eax, dword [esp + 0x460]
shl eax, 6
mov ecx, dword [esp + 0xc0]
mov eax, dword [ecx + eax + 0x1c]
test eax, eax
mov edi, dword [esp + 0x3e0]
jne 0x51308a
mov eax, dword [esp + 0xfc]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x51318c
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
je 0x51318c
mov esi, dword [esp + 0x460]
mov eax, dword [eax + esi*4]
cmp eax, 3
jne 0x51318c
mov ecx, 3
sub ecx, eax
xor ecx, eax
je 0x51318c
mov eax, esi
shl eax, 6
mov edx, dword [esp + 0xc0]
mov ecx, dword [edx + eax + 4]
mov eax, dword [edx + eax + 0xc]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x47c]
mov dword [esp], eax
call fcn.00410fa0
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x51318c
mov ecx, 1
mov al, byte [esp + 0x310]
movzx eax, al
cmp eax, 0x3d
jne 0x513173
mov eax, dword [esp + 0x474]
mov dword [esp + 0x404], eax
mov edi, dword [esp + 0x3e0]
mov esi, dword [esp + 0x3d8]
mov edx, dword [esp + 0x464]
jmp 0x5187e7
mov byte [esp + 0x310], 0x3d
mov eax, dword [esp + 0x48c]
mov eax, dword [eax + 0x10]
mov dword [eax + esi*4], 0
mov esi, 0x17
call fcn.00449410
mov dword [esp + 0x1e4], eax
mov eax, dword [esp + 0x48c]
mov eax, dword [eax + 0x10]
mov ecx, eax
imul ecx, ecx
and ecx, 3
xor edx, edx
cmp ecx, 3
mov edi, dword [esp + 0x460]
lea ecx, [eax + edi*4]
cmove ecx, edx
test eax, eax
cmove ecx, eax
mov dword [esp + 0x28c], ecx
mov eax, dword [esp + 0x500]
mov ebx, dword [eax + 8]
mov eax, edi
shl eax, 6
mov eax, dword [ebx + eax + 0x10]
mov dword [esp + 0x198], eax
test eax, eax
je 0x5190bd
xor eax, eax
test al, al
jne 0x5190bd
mov eax, 0xb
movzx ecx, byte [esp + 0x328]
cmp ecx, 0x7b
jne 0x513249
mov eax, 6
mov byte [esp + 0x328], 0x22
mov ecx, dword [esp + 0x198]
mov esi, dword [ecx]
mov edx, dword [esp + 0x28c]
test edx, edx
je 0x513255
mov ecx, edx
or ecx, 2
xor edx, 2
add edx, ecx
mov dl, byte [esp + 0x3a8]
je 0x51325c
test esi, esi
jne 0x51339f
jmp 0x51325c
mov dword [esp + 0x288], ebx
jmp 0x516caf
mov dl, byte [esp + 0x3a8]
cmp eax, 6
jne 0x513272
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
test ecx, ecx
jne 0x516ebf
mov dword [esp + 0x168], esi
mov byte [esp + 0x3a8], dl
mov byte [esp + 0x2f3], 0x79
mov eax, edi
mov dword [esp + 0x460], edi
shl eax, 6
lea ecx, [ebx + eax + 0x14]
mov dword [esp + 0x98], ecx
mov eax, dword [ebx + eax + 0x14]
mov dword [esp + 0x288], ebx
test eax, eax
je 0x519391
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
je 0x519391
mov ecx, dword [eax]
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 2
sete dl
movzx edx, dl
cmp ecx, edx
jne 0x51338c
mov ecx, 6
mov edx, dword [esp + 0x3fc]
mov edx, dword [edx]
mov dword [eax], edx
mov dword [esp + 0x45c], 1
mov ebx, dword [esp + 0x440]
cmp ecx, 6
je 0x513374
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
je 0x513380
mov eax, 0x1d
mov byte [esp + 0x14f], 0xc
mov byte [esp + 0x1e3], 0x22
lea ecx, [esp + 0x494]
mov dword [esp + 0x208], ecx
mov ecx, dword [esp + 0x494]
shl ecx, 8
lea edx, [esp + 0x498]
mov dword [esp + 0x214], edx
or ecx, dword [esp + 0x498]
mov edx, dword [esp + 0x47c]
mov dword [edx + 0xd0], ecx
mov ecx, dword [esp + 0x264]
mov ecx, dword [ecx]
test ecx, ecx
jne 0x50fd65
jmp 0x518e27
mov dword [esp + 0x440], ebx
jmp 0x514ac5
mov dword [esp + 0x440], ebx
jmp 0x514ac5
mov eax, dword [esp + 0x2d4]
mov dword [esp + 0x45c], eax
jmp 0x514ac5
mov eax, dword [esp + 0x28c]
mov eax, dword [eax]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
je 0x516ebf
mov dword [esp + 0x168], esi
mov byte [esp + 0x3a8], dl
mov eax, edi
mov dword [esp + 0x460], edi
shl eax, 6
mov ecx, ebx
mov dword [esp + 0x288], ecx
lea ebx, [ecx + eax + 0x14]
mov ecx, dword [ecx + eax + 0x14]
test ecx, ecx
jne 0x5134fa
mov eax, ecx
not eax
and eax, 1
add eax, ecx
mov dword [esp + 0x228], ecx
mov edi, dword [esp + 0x3fc]
mov edx, dword [esp + 0x44c]
je 0x513715
movzx ecx, byte [esp + 0x273]
cmp ecx, 0x25
je 0x51351b
mov dword [esp + 0x144], ebx
mov edi, 0x16
mov eax, 0xf
cmp ecx, 0x26
mov ebx, dword [esp + 0x50]
mov ecx, dword [esp + 0x424]
je 0x5199cf
cmp edi, 0xa
je 0x5135c4
mov dword [esp + 0x424], ecx
xor eax, eax
test al, al
jne 0x5135cb
mov dword [esp + 0x2a0], ebx
mov dword [esp + 0x44c], edx
xor esi, esi
mov edi, dword [esp + 0x3fc]
mov ebx, dword [esp + 0x144]
jmp 0x5134c6
mov byte [esp + 0x273], 0x5e
mov eax, 3
sub eax, esi
xor eax, esi
setne al
movzx eax, al
add esi, eax
mov dword [esp + 4], 4
mov dword [esp], 1
call fcn.00493a50
mov dword [esp + 0x228], eax
mov dword [ebx], eax
mov eax, esi
or eax, 2
mov ecx, esi
xor ecx, 2
add ecx, eax
setne al
movzx eax, al
cmp esi, eax
jb 0x513490
mov eax, dword [esp + 0x2a0]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x474]
mov dword [esp + 0x404], eax
jmp 0x5135bb
mov dword [esp + 0x228], ecx
mov eax, dword [esp + 0x474]
mov dword [esp + 0x404], eax
mov edi, dword [esp + 0x3fc]
jmp 0x5135bb
xor edi, edi
mov eax, dword [esp + 0x228]
jmp 0x513567
mov esi, 0xb
mov byte [esp + 0x273], 0x26
mov eax, edi
or eax, 2
mov ecx, edi
xor ecx, 2
add ecx, eax
setne al
movzx eax, al
add edi, eax
mov dword [esp + 4], 4
mov dword [esp], 1
call fcn.00493a50
mov dword [ebx], eax
mov ecx, 3
sub ecx, edi
xor ecx, edi
setne cl
movzx ecx, cl
cmp edi, ecx
jb 0x513530
mov dword [esp + 0x144], ebx
mov dword [esp + 0x228], eax
mov ebx, dword [esp + 0x440]
cmp esi, 0xb
jne 0x50fcea
mov dword [esp + 0x440], ebx
mov eax, dword [esp + 0x474]
mov dword [esp + 0x404], eax
mov edi, dword [esp + 0x3fc]
mov ebx, dword [esp + 0x144]
mov edx, dword [esp + 0x44c]
jmp 0x5135e9
mov dword [esp + 0x424], ecx
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
mov dword [esp + 0x50], ebx
mov dword [esp + 0x2d0], edx
jmp 0x50f98a
mov dword [esp + 0x144], ebx
mov dword [esp + 0x3fc], edi
movzx ecx, byte [esp + 0x320]
cmp ecx, 7
je 0x5136a0
mov dword [esp + 0x44c], edx
mov eax, 0xf
cmp ecx, 0x3e
jne 0x5136ea
mov esi, 2
mov byte [esp + 0x320], 0x3e
mov edx, dword [esp + 0x228]
mov eax, dword [edx]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
cmp eax, ecx
mov ecx, dword [esp + 0x404]
mov dword [esp + 0x474], ecx
mov eax, dword [esp + 0x2d4]
mov dword [esp + 0x45c], eax
mov dword [esp + 0x20c], edx
mov edx, ecx
je 0x518734
cmp esi, 2
je 0x5136fd
xor eax, eax
test al, al
jne 0x513709
mov dword [esp + 0x404], edx
xor esi, esi
mov edi, dword [esp + 0x2ec]
mov ebx, dword [esp + 0x3d8]
jmp 0x511440
mov dword [esp + 0x44c], edx
mov eax, 0xa
mov ecx, 0xd
mov byte [esp + 0x320], 1
mov edx, dword [esp + 0x228]
cmp dword [edx], 0
mov esi, dword [esp + 0x2d4]
mov dword [esp + 0x45c], esi
mov dword [esp + 0x20c], edx
mov edx, dword [esp + 0x404]
jne 0x512825
jmp 0x515a1f
mov ecx, dword [esp + 0x404]
mov dword [esp + 0x474], ecx
jmp 0x5186dd
mov dword [esp + 0x474], edx
jmp 0x514ac5
mov dword [esp + 0x474], edx
jmp 0x514ac5
mov eax, dword [esp + 0x474]
mov dword [esp + 0x404], eax
jmp 0x5135e9
mov eax, 3
sub eax, esi
xor eax, esi
setne al
movzx eax, al
add esi, eax
mov dword [esp + 4], 4
mov dword [esp], 1
call fcn.00493a50
mov dword [edi], eax
mov ecx, esi
and ecx, 1
xor ecx, esi
cmp ecx, 0xffffffff
setne cl
movzx ecx, cl
cmp esi, ecx
jb 0x513730
jmp 0x5132c3
mov byte [esp + 0x308], 0xb
mov eax, dword [esp + 0x134]
cmp dword [eax], 0
mov eax, dword [esp + 0x2d4]
mov dword [esp + 0x45c], eax
je 0x514ac5
xor eax, eax
mov ecx, dword [esp + 0x2d4]
mov esi, ecx
mov edx, dword [esp + 0x134]
jmp 0x5137cc
mov ecx, 3
sub ecx, eax
xor ecx, eax
setne cl
movzx ecx, cl
add eax, ecx
mov dword [edx], 0
mov esi, 1
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
setne cl
movzx ecx, cl
cmp eax, ecx
jb 0x5137b0
mov dword [esp + 0x45c], esi
jmp 0x514ac5
mov eax, 0xb
mov ecx, edi
shl ecx, 6
mov edx, dword [ebx + ecx + 0x18]
mov dword [esp + 0xe8], edx
test edx, edx
je 0x513864
xor edx, edx
test dl, dl
jne 0x513864
mov ecx, dword [ebx + ecx + 0x1c]
test ecx, ecx
jne 0x513885
mov esi, 0xd
mov eax, ecx
imul eax, eax
and eax, 3
cmp eax, 2
jae 0x513885
mov dword [esp + 0x288], ebx
mov dword [esp + 0x460], edi
mov eax, dword [esp + 0x2d4]
mov dword [esp + 0x45c], eax
mov dword [esp + 0xc4], ecx
cmp esi, 0xd
jne 0x510af4
imul esi, esi
and esi, 3
cmp esi, 2
jb 0x514ac5
jmp 0x510af4
mov dword [esp + 0x288], ebx
mov dword [esp + 0x460], edi
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], ecx
jmp 0x5119a2
mov dword [esp + 0xc4], ecx
mov eax, 8
movzx ecx, byte [esp + 0x2f9]
cmp ecx, 0x1b
je 0x5138c1
cmp ecx, 0x31
jne 0x513b2c
mov dword [esp + 0x288], ebx
mov dword [esp + 0x460], edi
mov ecx, dword [esp + 0x2d4]
jmp 0x50ef38
mov dword [esp + 0x288], ebx
mov dword [esp + 0x460], edi
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], ecx
cmp eax, 2
jne 0x513946
mov ecx, 3
sub ecx, eax
xor ecx, eax
je 0x513946
mov esi, 0xc
mov edi, 9
mov byte [esp + 0xf3], 0x67
mov byte [esp + 0x1c7], 0xa
mov ecx, dword [esp + 0x47c]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.004124f0
mov eax, dword [esp + 0x178]
mov eax, dword [eax]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x5173a3
jmp 0x519bf0
mov byte [esp + 0x2f9], 0x1b
mov ecx, dword [esp + 0x28c]
test ecx, ecx
je 0x513967
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
jne 0x518966
mov eax, 0x12
mov ecx, dword [esp + 0x3cc]
cmp dword [ecx], 0
je 0x5139b6
xor ecx, ecx
test cl, cl
jne 0x5139b6
mov esi, 0xd
mov eax, dword [esp + 0x460]
shl eax, 6
mov edx, dword [esp + 0x288]
mov ecx, dword [edx + eax + 0x14]
mov dword [esp + 0x88], ecx
test ecx, ecx
je 0x5139d7
mov edi, dword [esp + 0x43c]
mov ecx, dword [esp + 0x440]
jmp 0x5185d7
mov ecx, dword [esp + 0x474]
mov dword [esp + 0x404], ecx
mov edi, dword [esp + 0x3fc]
mov edx, dword [esp + 0x44c]
jmp 0x513c16
lea esi, [edx + eax + 0x14]
mov dword [esp + 4], 4
mov dword [esp], 1
call fcn.00493a50
mov dword [esp + 0x88], eax
mov dword [esi], eax
mov ebx, dword [esp + 0x440]
movzx ecx, byte [esp + 0x2e9]
cmp ecx, 0x40
je 0x513a48
mov edx, 0x12
cmp ecx, 0x6a
jne 0x513acc
mov edi, dword [esp + 0x44c]
mov eax, dword [esp + 0x450]
mov dword [esp + 0x440], ebx
mov ebx, eax
mov eax, dword [esp + 0x2c4]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x2cc]
jmp 0x51a405
mov ecx, 0xc
mov eax, 9
mov byte [esp + 0x2e9], 0x6a
mov edx, dword [esp + 0x88]
cmp dword [edx], 0
mov dword [esp + 0x440], ebx
mov esi, dword [esp + 0x2d4]
mov dword [esp + 0x45c], esi
mov dword [esp + 0x94], edx
jne 0x517f7d
cmp eax, 9
jne 0x512fe0
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
test ecx, ecx
je 0x512fe0
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
mov eax, dword [esp + 0x2c4]
mov dword [esp + 0x54], eax
jmp 0x51a07c
mov eax, 0x10
mov esi, 7
mov byte [esp + 0x2e9], 0x49
mov edi, dword [esp + 0x88]
mov ecx, dword [edi]
mov edx, ecx
and edx, 1
inc edx
xor edx, ecx
sete dl
movzx edx, dl
cmp ecx, edx
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], ecx
mov dword [esp + 0x94], edi
je 0x51a03e
cmp esi, 7
je 0x513b20
xor eax, eax
test al, al
jmp 0x51a4d3
mov dword [esp + 0x440], ebx
jmp 0x514ac5
mov dword [esp + 0x288], ebx
mov dword [esp + 0x460], edi
mov eax, 2
mov byte [esp + 0x2f9], 0x31
mov ecx, dword [esp + 0x28c]
test ecx, ecx
jne 0x513b79
mov esi, 6
imul ecx, ecx
and ecx, 3
cmp ecx, 2
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], ecx
jb 0x51211b
jmp 0x51894e
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], ecx
jmp 0x51894e
mov ecx, edi
and ecx, 1
inc ecx
xor ecx, edi
je 0x518a05
mov esi, 0x10
mov byte [esp + 0x334], 0x7c
mov ecx, dword [esp + 0x1e4]
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
sete al
movzx eax, al
cmp ecx, eax
mov ebx, dword [esp + 0x460]
je 0x5145b8
mov dword [esp + 0x460], ebx
mov ecx, 6
mov eax, 7
mov edx, dword [esp + 0xc4]
cmp dword [edx], 0
mov edx, dword [esp + 0x474]
mov dword [esp + 0x404], edx
mov edx, dword [esp + 0x2d0]
mov ebx, dword [esp + 0x2c8]
mov dword [esp + 0x450], ebx
mov edi, dword [esp + 0x3fc]
je 0x50f165
mov dword [esp + 0x44c], edx
cmp eax, 7
je 0x513cbf
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
je 0x513cbf
movzx ecx, byte [esp + 0x2fb]
cmp ecx, 0xe
je 0x513e25
mov eax, 0x10
cmp ecx, 0x73
jne 0x513e72
mov eax, dword [edi]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
mov edx, dword [esp + 0x460]
shl edx, 6
mov ebx, dword [esp + 0x288]
mov esi, dword [ebx + edx + 0x14]
mov dword [esp + 0xf4], esi
test esi, esi
setne byte [esp + 0xb7]
cmp eax, ecx
mov eax, 0x13
mov byte [esp + 0x2fb], 0x79
lea ecx, [ebx + edx + 0x14]
mov dword [esp + 0x9c], ecx
mov bl, byte [esp + 0x3b4]
mov ecx, dword [esp + 0x440]
jne 0x5195f4
jmp 0x513f05
mov dword [esp + 0x3fc], edi
mov ecx, 0x13
mov eax, dword [esp + 0x28c]
mov eax, dword [eax]
mov edx, eax
imul edx, edx
and edx, 3
cmp edx, 2
sete dl
movzx edx, dl
cmp eax, edx
mov edx, dword [esp + 0x404]
je 0x514173
mov dword [esp + 0x404], edx
cmp ecx, 0xd
mov edx, dword [esp + 0x44c]
jne 0x513d3a
mov eax, 3
sub eax, ecx
xor eax, ecx
je 0x513d3a
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
mov dword [esp + 0x2d0], edx
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
jmp 0x51288e
movzx eax, byte [esp + 0x307]
cmp eax, 0x35
je 0x513da4
mov esi, 0x17
cmp eax, 0x5e
jne 0x513e04
mov eax, 3
mov byte [esp + 0x307], 0x1a
mov ecx, dword [esp + 0x460]
shl ecx, 6
mov esi, dword [esp + 0x288]
lea edx, [esi + ecx + 0x14]
mov dword [esp + 0xbc], edx
mov ecx, dword [esi + ecx + 0x14]
mov dword [esp + 0x1dc], ecx
test ecx, ecx
mov ecx, dword [esp + 0x404]
mov dword [esp + 0x474], ecx
jne 0x519e0d
mov byte [esp + 0x307], 0x5e
mov eax, dword [esp + 0x460]
shl eax, 6
mov edx, dword [esp + 0x288]
lea ecx, [edx + eax + 0x14]
mov dword [esp + 0xbc], ecx
mov eax, dword [edx + eax + 0x14]
test eax, eax
je 0x513fb9
mov dword [esp + 0x1dc], eax
mov eax, 0x1c
xor ecx, ecx
test cl, cl
mov edx, dword [esp + 0x250]
mov edi, dword [esp + 0x3e0]
mov esi, dword [esp + 0x3d8]
je 0x51878b
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
mov eax, dword [esp + 0x228]
mov ebx, dword [esp + 0x144]
jmp 0x519a2c
mov eax, dword [edi]
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
mov edx, dword [esp + 0x460]
shl edx, 6
mov ebx, dword [esp + 0x288]
mov esi, dword [ebx + edx + 0x14]
mov dword [esp + 0xf4], esi
test esi, esi
setne byte [esp + 0xb7]
cmp eax, ecx
mov byte [esp + 0x2fb], 0x73
lea eax, [ebx + edx + 0x14]
mov dword [esp + 0x9c], eax
jmp 0x513ef1
mov dword [esp + 0x3fc], edi
mov ecx, dword [esp + 0x404]
mov dword [esp + 0x474], ecx
cmp eax, 8
je 0x515086
mov eax, dword [esp + 0x460]
shl eax, 6
mov ebx, dword [esp + 0x288]
mov esi, dword [ebx + eax + 0x14]
mov dword [esp + 0xf4], esi
test esi, esi
setne cl
mov edx, 3
sub edx, esi
xor edx, esi
setne dl
and dl, cl
mov byte [esp + 0xb7], dl
mov byte [esp + 0x2fb], 0xe
mov edi, dword [esp + 0x3fc]
cmp dword [edi], 0
lea eax, [ebx + eax + 0x14]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x474]
mov dword [esp + 0x404], eax
mov bl, byte [esp + 0x3b4]
mov ecx, dword [esp + 0x440]
jne 0x5148d5
mov dword [esp + 0x440], ecx
mov dword [esp + 0x3fc], edi
mov byte [esp + 0x3b4], bl
mov eax, 0x15
movzx ecx, byte [esp + 0x2ea]
cmp ecx, 0x72
jne 0x513f61
mov edx, dword [esp + 0x250]
mov edi, dword [esp + 0x3e0]
mov esi, dword [esp + 0x3d8]
mov dword [esp + 0x3d8], esi
mov dword [esp + 0x250], edx
movzx eax, byte [esp + 0x3b0]
cmp eax, 0x49
je 0x514072
cmp eax, 0x56
mov ebx, dword [esp + 0xbc]
jne 0x5140bf
mov dword [esp + 0x3e0], edi
xor edi, edi
jmp 0x514044
mov esi, 8
mov byte [esp + 0x3b0], 0x49
mov eax, edi
not eax
and eax, 1
add eax, edi
setne al
movzx eax, al
add edi, eax
mov dword [esp + 4], 4
mov dword [esp], 1
call fcn.00493a50
mov dword [ebx], eax
mov ecx, edi
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sbb ecx, ecx
and ecx, 1
cmp edi, ecx
jb 0x514010
mov dword [esp + 0x1dc], eax
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
jmp 0x514a88
mov dword [esp + 0x3e0], edi
mov edi, 0xf
mov byte [esp + 0x3b0], 0x60
mov dword [esp + 4], 4
mov dword [esp], 1
call fcn.00493a50
mov ecx, eax
mov dword [esp + 0x1dc], ecx
mov eax, dword [esp + 0xbc]
mov dword [eax], ecx
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
jmp 0x519e60
mov esi, 8
mov byte [esp + 0x3b0], 0x56
mov dword [esp + 4], 4
mov dword [esp], 1
call fcn.00493a50
mov dword [esp + 0x1dc], eax
mov dword [ebx], eax
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
mov eax, dword [esp + 0x45c]
jmp 0x51477c
mov ecx, 3
sub ecx, eax
xor ecx, eax
setne cl
movzx ecx, cl
add eax, ecx
mov ecx, dword [esi]
mov dword [edx], ecx
mov ecx, 1
mov dword [esp + 0x45c], ecx
test eax, eax
jne 0x514ac5
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 1
jbe 0x514110
jmp 0x514ac5
mov eax, esi
or eax, 2
mov ecx, esi
xor ecx, 2
add ecx, eax
setne al
movzx eax, al
cmp esi, eax
mov edx, dword [esp + 0x474]
mov ebx, dword [esp + 0x440]
je 0x516c0a
mov edi, edx
mov eax, dword [esp + 0x460]
shl eax, 6
mov ecx, dword [esp + 0x288]
mov edx, dword [ecx + eax + 0x14]
test edx, edx
jne 0x5141b1
mov eax, 0x11
mov ecx, edx
not ecx
and ecx, 1
add ecx, edx
je 0x5141b1
mov dword [esp + 0x21c], edx
mov dword [esp + 0x474], edi
jmp 0x519ebc
mov esi, 0x17
movzx ecx, byte [esp + 0x324]
cmp ecx, 0xb
je 0x5141e7
mov eax, 4
cmp ecx, 0x49
jne 0x514208
mov dword [esp + 0x474], edi
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], ecx
jmp 0x5176cf
mov dword [esp + 0x21c], edx
mov dword [esp + 0x474], edi
mov eax, dword [esp + 0x2d4]
mov dword [esp + 0x45c], eax
jmp 0x512573
mov eax, 5
mov byte [esp + 0x324], 0xb
mov ecx, dword [edx]
mov dword [esp + 0x21c], edx
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 3
sete dl
movzx edx, dl
cmp ecx, edx
mov dword [esp + 0x474], edi
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], ecx
jne 0x51269e
cmp eax, 5
jne 0x5130b2
jmp 0x514ac5
mov byte [esp + 0x30a], 0x3a
mov esi, dword [esp + 0x28c]
mov eax, dword [esi]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x514295
mov eax, dword [esp + 0x2c8]
mov dword [esp + 0x450], eax
mov ecx, edi
jmp 0x5198fc
mov edx, dword [esp + 0x260]
mov eax, 8
movzx ecx, byte [esp + 0x2eb]
cmp ecx, 0x32
jne 0x514305
mov byte [esp + 0x2db], 0x20
xor edx, edi
setne al
movzx eax, al
add edi, eax
mov dword [esp + 4], 4
mov dword [esp], 1
call fcn.00493a50
mov dword [esi], eax
mov edx, 3
sub edx, edi
mov ecx, edi
xor ecx, edx
setne cl
movzx ecx, cl
cmp edi, ecx
jb 0x514480
mov dword [esp + 0x54], eax
mov dword [esp + 0x2c8], ebx
jmp 0x519f3a
mov esi, 0xb
mov eax, ebx
shl eax, 6
mov edx, dword [esp + 0x288]
lea ecx, [edx + eax + 0x14]
mov dword [esp + 0xe4], ecx
mov ecx, dword [edx + eax + 0x14]
test ecx, ecx
jne 0x51450f
mov eax, 0x17
mov edx, ecx
mov dword [esp + 0x19c], edx
or ecx, 2
xor edx, 2
add edx, ecx
jne 0x5150ce
mov dword [esp + 0x19c], ecx
cmp esi, 0xb
mov eax, dword [esp + 0x440]
je 0x51454f
cmp esi, 0x10
jne 0x5145cc
mov eax, 3
sub eax, esi
xor eax, esi
jne 0x519230
mov dword [esp + 0x460], ebx
mov eax, dword [esp + 0x19c]
cmp dword [eax], 0
jne 0x5146c0
xor ecx, ecx
cmp eax, 0xf
je 0x514692
imul eax, eax
and eax, 3
cmp eax, 2
je 0x514692
mov dword [esp + 0x150], esi
mov byte [esp + 0x30c], bl
mov dword [esp + 0x3fc], edx
jmp 0x50fc05
mov bl, 0x6f
mov eax, 3
sub eax, ecx
xor eax, ecx
setne al
movzx eax, al
add ecx, eax
mov eax, dword [edx]
mov dword [esi], eax
mov dword [esp + 0x45c], 1
mov eax, ecx
and eax, 1
xor eax, ecx
cmp eax, 0xffffffff
setne al
movzx eax, al
cmp ecx, eax
jb 0x514670
mov dword [esp + 0x150], esi
mov byte [esp + 0x30c], bl
mov dword [esp + 0x3fc], edx
jmp 0x514ac5
mov dword [esp + 0x460], ebx
mov esi, 7
cmp dword [ecx], 0
mov edi, dword [esp + 0x3e0]
jne 0x5147a9
mov eax, dword [esp + 0x2d4]
mov dword [esp + 0x3e0], edi
cmp esi, 7
jne 0x519e0d
mov dword [esp + 0x45c], eax
mov eax, esi
and eax, 1
xor eax, esi
not eax
test eax, eax
jne 0x514ac5
jmp 0x519e0d
mov bh, byte [esp + 0x2f2]
movzx eax, bh
cmp eax, 0x31
je 0x514874
xor edx, edx
cmp eax, 0x43
je 0x5147f1
jmp 0x514859
mov esi, edx
imul esi, esi
and esi, 3
cmp esi, 2
sbb esi, esi
and esi, 1
cmp edx, esi
jb 0x5147d0
mov byte [esp + 0x2f2], 0x31
mov dword [ecx], 0
jmp 0x514aba
mov dword [esp + 0x3fc], edi
mov byte [esp + 0x3b4], bl
mov esi, 6
test byte [esp + 0xb7], 1
je 0x514915
cmp esi, 8
jne 0x514ac5
jmp 0x519e0d
mov byte [esp + 0x2fa], 0xa
mov eax, dword [esp + 0xf4]
mov dword [eax], 0
mov dword [esp + 0x45c], 1
mov esi, dword [esp + 0x500]
mov edi, dword [esi + 8]
add esi, 8
mov eax, dword [esp + 0x460]
mov ecx, eax
shl ecx, 6
mov ebx, dword [edi + ecx + 0x10]
test ebx, ebx
je 0x514b20
mov eax, 1
xor edx, edx
test dl, dl
jne 0x514b20
movzx eax, byte [esp + 0x309]
cmp eax, 0x1d
je 0x514b80
mov dword [esp + 0x110], ebx
mov dword [esp + 0x3d4], esi
cmp eax, 0x5e
jne 0x514bcc
mov byte [esp + 0x309], 0x1d
cmp dword [edi + ecx + 0x18], 0
mov dword [esp + 0x2e4], edi
mov edx, dword [esp + 0x45c]
je 0x514c05
mov eax, 8
xor ecx, ecx
test cl, cl
mov dword [esp + 0x1b4], edx
je 0x513e87
jmp 0x515102
mov dword [esp + 0x110], ebx
mov dword [esp + 0x3d4], esi
mov eax, 0x17
mov byte [esp + 0x309], 0x4d
mov ecx, dword [edi + ecx + 0x18]
mov dword [esp + 0x2e4], edi
test ecx, ecx
jne 0x514c11
mov edx, ecx
not edx
and edx, 1
add edx, ecx
mov ecx, dword [esp + 0x45c]
mov dword [esp + 0x1b4], ecx
jne 0x515102
jmp 0x519b69
mov byte [esp + 0x309], 0x5e
mov eax, dword [edi + ecx + 0x18]
mov dword [esp + 0x2e4], edi
test eax, eax
mov ecx, dword [esp + 0x45c]
je 0x514c24
imul eax, eax
and eax, 3
cmp eax, 2
mov dword [esp + 0x1b4], ecx
jne 0x515086
jmp 0x515102
mov dword [esp + 0x1b4], edx
jmp 0x515102
mov ecx, dword [esp + 0x45c]
mov dword [esp + 0x1b4], ecx
jmp 0x519b69
mov dword [esp + 0x1b4], ecx
jmp 0x515102
mov dword [esp + 0x404], edx
mov eax, dword [esp + 0x110]
mov eax, dword [eax]
test eax, eax
je 0x514c89
cmp eax, 3
jne 0x514dbe
mov eax, 0x10
mov ecx, 0xf
movzx edx, byte [esp + 0x3a4]
cmp edx, 0x11
mov edx, dword [esp + 0x404]
mov dword [esp + 0x474], edx
mov edi, dword [esp + 0x3c0]
mov edx, dword [esp + 0x44c]
je 0x514f47
jmp 0x515573
movzx eax, byte [esp + 0x368]
cmp eax, 0x55
jne 0x514dca
xor esi, esi
mov eax, dword [esp + 0x460]
shl eax, 6
mov dword [esp + 0x2c8], eax
jmp 0x514d9f
mov byte [esp + 0x368], 0x7a
mov eax, esi
imul eax, eax
and eax, 3
cmp eax, 2
adc esi, 0
mov eax, dword [esp + 0x3fc]
mov edx, dword [eax]
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
mov dword [esp + 0x2cc], eax
mov eax, dword [esp + 0x2e4]
mov edi, dword [esp + 0x2c8]
mov ebx, dword [eax + edi]
mov dword [esp + 0x474], ebx
mov ebx, dword [eax + edi + 4]
mov edi, dword [eax + edi + 0xc]
mov eax, dword [esp + 0x47c]
mov ecx, dword [eax]
mov dword [esp + 0x2d0], ecx
mov eax, dword [eax + 4]
mov dword [esp + 0x3c], edx
mov ecx, dword [esp + 0x2cc]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], edi
mov ecx, dword [esp + 0x474]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2d0]
mov dword [esp], eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x1c], 0xffffffff
mov dword [esp + 0x18], 0
call fcn.0042fd40
mov edx, esi
or edx, 2
mov ecx, esi
xor ecx, 2
add ecx, edx
setne cl
movzx ecx, cl
cmp esi, ecx
jb 0x514cc0
jmp 0x51506c
mov eax, dword [esp + 0x404]
jmp 0x516766
mov byte [esp + 0x368], 0x55
mov eax, dword [esp + 0x3fc]
mov eax, dword [eax]
mov dword [esp + 0x474], eax
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
mov dword [esp + 0x2d0], eax
mov edx, dword [esp + 0x460]
shl edx, 6
mov eax, dword [esp + 0x2e4]
mov edi, dword [eax + edx]
mov ebx, dword [eax + edx + 4]
mov edx, dword [eax + edx + 0xc]
mov eax, dword [esp + 0x47c]
mov esi, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [esp + 0x474]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x2d0]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], edx
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov dword [esp], esi
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x1c], 0xffffffff
mov dword [esp + 0x18], 0
call fcn.0042fd40
mov ecx, 0xa
mov dword [esp + 0x2cc], eax
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
mov eax, dword [esp + 0x440]
jmp 0x511f3b
mov esi, 1
mov byte [esp + 0x3a4], 0x11
mov eax, ecx
or eax, 2
mov edx, ecx
xor edx, 2
add edx, eax
setne al
movzx eax, al
add ecx, eax
mov dword [edi], 3
mov eax, 3
sub eax, ecx
xor eax, ecx
setne al
movzx eax, al
cmp ecx, eax
jb 0x514ec0
mov dword [esp + 0x3c0], edi
mov eax, dword [esp + 0x404]
jmp 0x51674f
mov eax, 0x19
mov byte [esp + 0x32c], 0x2a
mov ecx, dword [esp + 0x48c]
mov ecx, dword [ecx + 0x10]
test ecx, ecx
je 0x514f40
mov dword [esp + 0x330], ecx
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jne 0x517d71
jmp 0x514f47
mov dword [esp + 0x330], ecx
mov dword [esp + 0x44c], edx
xor ecx, ecx
cmp eax, 0x10
je 0x514ee7
xor eax, eax
test al, al
jne 0x514ee7
mov edx, dword [esp + 0x44c]
jmp 0x5167e8
mov byte [esp + 0x3c8], 0x74
inc edx
mov dword [esp + 0x474], edx
mov eax, dword [esp + 0x3cc]
mov eax, dword [eax]
mov dword [esp + 0x2d0], eax
mov eax, dword [esp + 0x3d4]
mov ecx, dword [eax]
mov esi, dword [esp + 0x2c0]
mov edx, dword [ecx + esi + 0x10]
mov edx, dword [edx]
mov eax, dword [esp + 0x458]
mov ebx, dword [eax]
mov eax, dword [ecx + esi]
mov dword [esp + 0x2cc], eax
mov edi, dword [ecx + esi + 4]
mov ecx, dword [ecx + esi + 0xc]
mov eax, dword [esp + 0x47c]
mov esi, dword [eax]
mov dword [esp + 0x2c8], esi
mov eax, dword [eax + 4]
mov esi, dword [esp + 0x2d0]
mov dword [esp + 0x3c], esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x2cc]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c8]
mov dword [esp], eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x1c], 0xffffffff
call fcn.0042fd40
mov edx, dword [esp + 0x474]
mov ecx, edx
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sbb ecx, ecx
and ecx, 1
cmp edx, ecx
jb 0x514f70
mov dword [esp + 0x2cc], eax
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
jmp 0x515d74
mov ebx, dword [esp + 0x460]
mov edi, ebx
shl edi, 6
mov eax, dword [esp + 0x2e4]
mov ecx, dword [eax + edi + 0x1c]
test ecx, ecx
jne 0x515338
mov ecx, 0x1a
movzx eax, byte [esp + 0x40c]
cmp eax, 1
je 0x51522a
cmp eax, 0x5d
jne 0x515425
xor edx, edx
mov esi, 0xffffffff
mov eax, dword [esp + 0x460]
shl eax, 6
mov dword [esp + 0x2c8], eax
mov eax, dword [esp + 0x2cc]
jmp 0x515210
mov byte [esp + 0x40c], 1
inc edx
mov dword [esp + 0x404], edx
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
mov dword [esp + 0x2d0], esi
mov esi, dword [esp + 0x2e4]
mov edi, dword [esp + 0x2c8]
mov ecx, dword [esi + edi]
mov edx, dword [esi + edi + 4]
mov edi, dword [esi + edi + 0xc]
mov esi, dword [esp + 0x47c]
mov ebx, dword [esi]
mov esi, dword [esi + 4]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], edi
mov dword [esp + 8], ecx
mov dword [esp + 4], esi
mov esi, dword [esp + 0x2d0]
mov dword [esp], ebx
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
call fcn.0042fd40
mov edx, dword [esp + 0x404]
dec esi
mov ecx, edx
and ecx, 1
xor ecx, esi
setne cl
movzx ecx, cl
cmp edx, ecx
jb 0x515150
jmp 0x515d6d
cmp ecx, 0xf
mov ecx, dword [esp + 0x460]
je 0x512bc6
xor eax, eax
test al, al
jne 0x512bc6
mov byte [esp + 0x40c], 0x5d
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
shl ecx, 6
mov edi, dword [esp + 0x2e4]
mov edx, dword [edi + ecx]
mov esi, dword [edi + ecx + 4]
mov ecx, dword [edi + ecx + 0xc]
mov ebx, dword [esp + 0x47c]
mov edi, dword [ebx]
mov ebx, dword [ebx + 4]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], esi
mov esi, 0x1c
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov dword [esp + 4], ebx
mov dword [esp], edi
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
call fcn.0042fd40
mov ebx, dword [esp + 0x450]
mov edi, dword [esp + 0x44c]
mov ecx, dword [esp + 0x2c4]
mov dword [esp + 0x54], ecx
mov dword [esp + 0x2cc], eax
cmp esi, 0x10
jne 0x5155ae
mov eax, esi
not eax
and eax, 1
add eax, esi
mov eax, dword [esp + 0x54]
je 0x5155bb
mov dword [esp + 0x2d0], edi
xor edi, edi
mov esi, dword [esp + 0xa4]
jmp 0x5144a8
mov byte [esp + 0x40c], 0x14
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
mov ecx, dword [esp + 0x460]
shl ecx, 6
mov edi, dword [esp + 0x2e4]
mov edx, dword [edi + ecx]
mov esi, dword [edi + ecx + 4]
mov ecx, dword [edi + ecx + 0xc]
mov ebx, dword [esp + 0x47c]
mov edi, dword [ebx]
mov ebx, dword [ebx + 4]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov dword [esp + 4], ebx
mov dword [esp], edi
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
call fcn.0042fd40
jmp 0x515d6d
mov dword [esp + 0x44c], edx
cmp ecx, 8
je 0x5127d8
xor eax, eax
test al, al
jne 0x5127d8
mov byte [esp + 0x3a4], 0x24
mov dword [edi], 3
mov dword [esp + 0x3c0], edi
mov eax, dword [esp + 0x474]
jmp 0x516766
mov dword [esp + 0x450], ebx
mov eax, dword [esp + 0x54]
jmp 0x5155c2
mov dword [esp + 0x450], ebx
mov dword [esp + 0x2c4], eax
mov dword [esp + 0x44c], edi
jmp 0x515d74
cmp esi, 0xe
je 0x517b15
jmp 0x5155e4
movzx eax, byte [esp + 0x38c]
cmp eax, 3
jne 0x515633
mov edi, 0x10
mov eax, 8
mov byte [esp + 0x38c], 0x29
mov ecx, dword [esp + 0x48c]
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0x23c], ecx
mov dword [esp + 0x420], 0
test ecx, ecx
mov dword [esp + 0x440], ebx
jne 0x516ee8
jmp 0x518b9b
mov byte [esp + 0x38c], 3
mov eax, dword [esp + 0x48c]
mov edx, dword [eax + 0x10]
mov dword [esp + 0x420], 0
test edx, edx
jne 0x515672
mov eax, edx
or eax, 2
mov ecx, edx
mov dword [esp + 0x23c], edx
xor ecx, 2
add ecx, eax
jne 0x518bb2
jmp 0x515956
mov dword [esp + 0x23c], edx
jmp 0x515956
xor ecx, ecx
mov esi, dword [esp + 0x3c0]
jmp 0x515919
mov dl, byte [esp + 0x35c]
movzx eax, dl
cmp eax, 0x11
mov edi, dword [esp + 0x460]
je 0x51598d
mov ecx, 0xb
cmp eax, 0x57
jne 0x515ac2
mov dword [esp + 0x440], ebx
mov edx, dword [esp + 0x23c]
jmp 0x516f4f
mov esi, 7
mov byte [esp + 0x35c], 0x11
mov eax, dword [esp + 0x23c]
mov eax, dword [eax + edi*4]
mov dword [esp + 0x420], eax
mov eax, esi
and eax, 1
xor eax, esi
cmp eax, 0xffffffff
setne al
movzx eax, al
cmp esi, eax
jne 0x518bb2
mov eax, 0x16
mov esi, 0x10
mov byte [esp + 0x29b], 0x5c
mov edx, dword [esp + 0x260]
mov ecx, edx
and ecx, 1
inc ecx
xor ecx, edx
sete cl
movzx ecx, cl
cmp edx, ecx
mov dword [esp + 0x440], ebx
mov edx, dword [esp + 0x474]
jne 0x515a1f
cmp esi, 0x10
je 0x515b0a
cmp eax, 0xa
je 0x515b6d
xor ebx, ebx
test bl, bl
jne 0x515b79
mov esi, 0xe
movzx eax, byte [esp + 0x29b]
cmp eax, 0x45
jne 0x515b85
xor eax, eax
mov esi, dword [esp + 0x23c]
jmp 0x515aea
mov dl, 0x57
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
adc eax, 0
mov ecx, dword [esi + edi*4]
mov dword [esp + 0x420], ecx
mov ecx, eax
and ecx, 1
xor ecx, eax
cmp ecx, 0xffffffff
setne cl
movzx ecx, cl
cmp eax, ecx
jb 0x515ad0
mov byte [esp + 0x35c], dl
jmp 0x518bb2
mov eax, 0xf
mov ecx, dword [esp + 0x300]
mov ecx, dword [ecx]
mov edx, dword [esp + 0xdc]
lea edx, [edx + edx*2]
mov esi, dword [esp + 0x29c]
mov dword [ecx + edx*8 + 0x14], esi
mov ecx, ebx
cmp eax, 0xf
je 0x515b5f
mov dword [esp + 0x43c], edi
imul eax, eax
and eax, 3
cmp eax, 3
mov ebx, ecx
mov dword [esp + 0x440], ecx
jne 0x518432
jmp 0x517745
mov dword [esp + 0x43c], edi
mov ebx, ecx
jmp 0x517745
mov dword [esp + 0x474], edx
jmp 0x518734
mov dword [esp + 0x474], edx
jmp 0x518734
cmp esi, 0xe
jne 0x5195b0
mov eax, 3
sub eax, esi
xor eax, esi
je 0x5195b0
xor esi, esi
mov edi, dword [esp + 0x43c]
jmp 0x51001f
mov eax, esi
and eax, 1
xor eax, esi
cmp eax, 0xffffffff
setne al
movzx eax, al
add esi, eax
mov eax, dword [esp + 0x34c]
mov eax, dword [eax]
mov ecx, dword [esp + 0x460]
shl ecx, 6
mov edx, dword [eax + ecx + 0x3c]
mov dword [esp + 0x440], edx
mov edx, dword [eax + ecx + 0x34]
mov dword [esp + 0x404], edx
mov edx, dword [eax + ecx + 0x2c]
mov dword [esp + 0x2d0], edx
mov edx, dword [eax + ecx + 0x28]
mov dword [esp + 0x2cc], edx
mov edx, dword [eax + ecx + 0x24]
mov dword [esp + 0x2c8], edx
mov edx, dword [eax + ecx + 0x20]
mov dword [esp + 0x2c4], edx
mov edx, dword [eax + ecx + 0x1c]
mov ebx, dword [eax + ecx + 0x18]
mov edi, dword [eax + ecx]
mov dword [esp + 0x2c0], edi
mov edi, dword [eax + ecx + 4]
mov dword [esp + 0x2bc], edi
mov eax, dword [eax + ecx + 0xc]
mov dword [esp + 0x2b8], eax
mov ecx, dword [edx]
mov edx, dword [ebx]
mov byte [esp + 0x430], 0x66
mov dword [esp + 0x5c], 2
mov eax, dword [esp + 0x458]
mov ebx, dword [eax]
mov eax, dword [esp + 0x47c]
mov edi, dword [eax]
mov dword [esp + 0x2b4], edi
mov eax, dword [eax + 4]
mov edi, dword [esp + 0x420]
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x440]
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x404]
mov dword [esp + 0x34], edi
mov edi, dword [esp + 0x2d0]
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x2cc]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x2c8]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x2c4]
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x2a0]
mov ecx, dword [esp + 0x2bc]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x2b8]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x2c0]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2b4]
mov dword [esp], eax
mov dword [esp + 0x18], 0xffffffff
call fcn.0042fd40
mov ecx, esi
not ecx
and ecx, 1
add ecx, esi
setne cl
movzx ecx, cl
cmp esi, ecx
jb 0x515bc0
mov dword [esp + 0x2cc], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x2c4], eax
mov ecx, dword [esp + 0x5c]
cmp ecx, 2
je 0x515d64
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
mov dword [esp + 0x440], ebx
jne 0x518b33
jmp 0x515d74
mov dword [esp + 0x440], ebx
jmp 0x515d74
mov dword [esp + 0x2cc], eax
mov esi, dword [esp + 0x2cc]
mov dword [esp], esi
call fcn.00411e90
mov dword [esp], esi
call fcn.004302d0
mov ecx, dword [esp + 0x460]
mov eax, ecx
not eax
and eax, 1
add eax, ecx
setne al
movzx eax, al
add eax, ecx
mov ecx, dword [esp + 0x500]
cmp eax, dword [ecx]
jae 0x515dd3
mov esi, eax
mov edx, dword [esp + 0x1b4]
mov eax, edx
mov dword [esp + 0x2d4], eax
mov dword [esp + 0x138], edx
mov ah, byte [esp + 0x206]
jmp 0x512e89
mov al, 0x5e
mov esi, 0xa
movzx eax, al
cmp eax, 0x5e
jne 0x515e45
mov ebx, dword [esp + 0x50]
mov eax, dword [esp + 0x1b4]
mov dword [esp + 0x138], eax
cmp esi, 0xa
je 0x515e08
xor eax, eax
test al, al
jne 0x515e08
mov dword [esp + 0x50], ebx
jmp 0x50f5ee
mov dword [esp + 0x438], 0
mov ecx, dword [esp + 0x138]
cmp ecx, 1
jne 0x515fc3
mov eax, 3
sub eax, ecx
xor eax, ecx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x44c], eax
mov dword [esp + 0x424], eax
jne 0x515e6e
jmp 0x512760
mov ecx, dword [esp + 0x1b4]
mov eax, ecx
not eax
and eax, 1
add eax, ecx
setne al
movzx eax, al
cmp ecx, eax
jne 0x515fcc
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x138], ecx
mov esi, 0xc
mov byte [esp + 0x107], 0x22
mov eax, dword [esp + 0x4fc]
mov dword [esp], eax
call fcn.004936c0
mov dword [esp + 0x4fc], 0
mov eax, dword [esp + 0x500]
lea ecx, [esp + 0x4f4]
mov dword [esp + 8], ecx
lea ecx, [esp + 0x4fc]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00627ff0
mov dword [esp + 0x2d0], eax
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
mov dword [esp + 0x438], 0
cmp eax, ecx
mov dword [esp + 0x50], ebx
mov eax, dword [esp + 0x2ac]
mov edx, eax
mov ecx, dword [esp + 0x450]
mov dword [esp + 0x2c8], ecx
mov dword [esp + 0x424], eax
jne 0x519c46
mov eax, esi
and eax, 1
xor eax, esi
cmp eax, 0xffffffff
setne al
movzx eax, al
cmp esi, eax
jne 0x515f62
movzx eax, byte [esp + 0x186]
cmp eax, 0x52
je 0x512a1d
mov esi, 7
mov byte [esp + 0x186], 0x15
mov eax, dword [esp + 0x100]
test eax, eax
mov dword [esp + 0x2dc], eax
mov eax, dword [esp + 0x424]
mov dword [esp + 0x450], eax
jne 0x50f826
jmp 0x517323
mov edx, 0xb
movzx ecx, byte [esp + 0x107]
cmp ecx, 7
je 0x51601c
cmp ecx, 0x22
mov edx, dword [esp + 0x2d0]
mov esi, dword [esp + 0x2c8]
je 0x51605d
mov ebx, 6
mov eax, 0x12
cmp ecx, 0x50
mov dword [esp + 0x450], esi
mov dword [esp + 0x44c], edx
mov edi, dword [esp + 0x460]
mov edx, dword [esp + 0x23c]
je 0x50f652
jmp 0x516fbe
mov dword [esp + 0x50], ebx
jmp 0x516a95
mov esi, 0x15
mov dword [esp + 0x438], 0
mov ebx, dword [esp + 0x440]
mov dword [esp + 0x138], ecx
mov eax, dword [esp + 0x424]
mov dword [esp + 0x424], eax
cmp esi, 0xd
je 0x517b15
imul esi, esi
and esi, 3
cmp esi, 3
mov dword [esp + 0x440], ebx
jne 0x512760
jmp 0x517b15
mov eax, dword [esp + 0x2c8]
mov ecx, dword [esp + 0x2d0]
mov dword [esp + 0x44c], ecx
mov ecx, dword [esp + 0x424]
mov dword [esp + 0x450], eax
cmp edx, 9
jne 0x516107
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
mov edx, ecx
jmp 0x519c46
mov eax, dword [esp + 0x4f4]
mov dword [esp + 0x124], eax
mov dword [esp + 0x4f8], eax
mov eax, dword [esp + 0x178]
mov eax, dword [eax]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
mov eax, 9
mov byte [esp + 0x107], 0x3e
mov dword [esp + 0x450], esi
mov dword [esp + 0x44c], edx
je 0x51651c
cmp eax, 9
jne 0x5160c3
mov ecx, 3
sub ecx, eax
xor ecx, eax
jne 0x51616a
mov byte [esp + 0x206], 0x79
mov eax, dword [esp + 0xf8]
mov ecx, dword [eax + 8]
mov dword [esp + 0xc0], ecx
mov eax, dword [esp + 0x460]
shl eax, 6
mov eax, dword [ecx + eax + 0x10]
test eax, eax
jne 0x5130b2
mov ecx, eax
or ecx, 2
xor eax, 2
add eax, ecx
jne 0x512fab
jmp 0x5130b2
mov dword [esp + 0x424], ecx
mov eax, 0xa
mov byte [esp + 0x107], 0x50
mov ecx, dword [esp + 0x4f4]
mov dword [esp + 0x124], ecx
mov dword [esp + 0x4f8], ecx
mov ecx, dword [esp + 0x178]
mov ecx, dword [ecx]
mov edx, ecx
and edx, 1
inc edx
xor edx, ecx
sete dl
movzx edx, dl
cmp ecx, edx
je 0x51651c
cmp eax, 0xa
je 0x51616a
imul eax, eax
and eax, 3
cmp eax, 3
mov ebx, dword [esp + 0x440]
jne 0x511d44
mov edi, 0x11
mov esi, 9
mov eax, dword [esp + 0x4fc]
mov ecx, dword [esp + 0x124]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x244]
mov dword [esp], eax
call fcn.00593cf0
mov dword [esp + 0x44c], eax
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
mov dword [esp + 0x438], 0
cmp eax, ecx
mov eax, dword [esp + 0x2ac]
mov dword [esp + 0x424], eax
mov ebx, dword [esp + 0x45c]
jne 0x5161f9
mov dword [esp + 0x45c], ebx
cmp edi, 4
jne 0x512760
cmp esi, 7
je 0x516217
cmp ecx, 7
je 0x516426
imul ecx, ecx
and ecx, 3
cmp ecx, 2
je 0x516426
mov dword [esp + 0x404], edx
xor eax, eax
mov esi, dword [esp + 0x3bc]
mov edi, dword [esp + 0x444]
mov ebx, dword [esp + 0x43c]
jmp 0x5163f9
mov byte [esp + 0x448], 0x58
mov ecx, 3
sub ecx, eax
xor ecx, eax
setne cl
movzx ecx, cl
add eax, ecx
mov ecx, dword [esp + 0x414]
mov ecx, dword [ecx + 8]
mov edx, dword [esp + 0x450]
mov dword [edx + 8], ecx
mov dword [edx + 0x10], 0
mov ecx, dword [esp + 0x418]
mov dword [esi], ecx
mov ebx, dword [edx + 8]
mov dword [edi], ebx
mov ecx, dword [esp + 0x434]
mov dword [ecx], edx
mov ecx, dword [esp + 0x410]
mov dword [esp + 0x454], ecx
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
setne cl
movzx ecx, cl
cmp eax, ecx
jb 0x5163a0
mov dword [esp + 0x43c], ebx
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
jmp 0x518349
mov esi, edx
movzx edx, byte [esp + 0x360]
cmp edx, 0x34
je 0x5164da
mov eax, 6
mov ecx, 0x10
cmp edx, 0x35
mov ebx, dword [esp + 0x440]
mov edx, esi
mov dword [esp + 0x474], edx
mov esi, dword [esp + 0x2c4]
mov dword [esp + 0x54], esi
jne 0x519f91
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sbb ecx, ecx
and ecx, 1
cmp eax, ecx
je 0x514c30
mov byte [esp + 0x360], 0x35
mov eax, dword [esp + 0x2e0]
imul eax, eax, 0x1c
mov ecx, dword [esp + 0x2b0]
cmp dword [ecx + eax + 0x14], 8
je 0x51944f
mov ecx, edx
xor eax, eax
test al, al
jne 0x516515
mov eax, 0xc
mov edx, 0x30000003
mov ebx, dword [esp + 0x440]
mov dword [esp + 0x474], ecx
mov esi, dword [esp + 0x2c4]
mov dword [esp + 0x54], esi
mov dword [esp + 0x424], ecx
jmp 0x51a0b4
mov byte [esp + 0x360], 0x34
imul eax, dword [esp + 0x2e0], 0x1c
mov dword [esp + 0x2d0], 0x30000003
mov ecx, dword [esp + 0x2b0]
cmp dword [ecx + eax + 0x14], 8
mov edx, esi
mov dword [esp + 0x474], edx
jne 0x519c46
jmp 0x51944f
mov edx, ecx
jmp 0x51944f
mov ecx, dword [esp + 0x114]
test ecx, ecx
mov esi, dword [esp + 0x124]
mov edx, dword [esp + 0x2ac]
je 0x51657b
mov dword [esp + 0x474], eax
cmp esi, 1
mov ebx, dword [esp + 0x440]
jne 0x516a5c
mov dword [esp + 0x404], eax
movzx eax, byte [esp + 0x32c]
cmp eax, 0x2a
mov edi, dword [esp + 0x3c0]
mov edx, dword [esp + 0x44c]
je 0x5167b4
cmp eax, 0x77
jne 0x514f0d
mov byte [esp + 0x32c], 0x77
mov eax, dword [esp + 0x48c]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x330], eax
test eax, eax
jne 0x517d71
jmp 0x5167e8
mov eax, 8
mov byte [esp + 0x32c], 0x3e
mov ecx, dword [esp + 0x48c]
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0x330], ecx
test ecx, ecx
mov ecx, dword [esp + 0x404]
mov dword [esp + 0x474], ecx
jne 0x517d4b
mov dword [esp + 0x44c], edx
mov dword [esp + 0x3c0], edi
movzx eax, byte [esp + 0x3c8]
cmp eax, 0x74
jne 0x51681b
xor edx, edx
mov eax, dword [esp + 0x460]
shl eax, 6
mov dword [esp + 0x2c0], eax
jmp 0x515054
mov byte [esp + 0x3c8], 4
mov eax, dword [esp + 0x3d4]
mov eax, dword [eax]
mov ecx, dword [esp + 0x460]
shl ecx, 6
mov edx, dword [eax + ecx + 0x10]
mov esi, dword [eax + ecx]
mov dword [esp + 0x474], esi
mov ebx, dword [eax + ecx + 4]
mov eax, dword [eax + ecx + 0xc]
mov dword [esp + 0x2cc], eax
mov eax, dword [esp + 0x3cc]
mov ecx, dword [eax]
mov edx, dword [edx]
mov eax, dword [esp + 0x458]
mov esi, dword [eax]
mov eax, dword [esp + 0x47c]
mov edi, dword [eax]
mov dword [esp + 0x2d0], edi
mov eax, dword [eax + 4]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ebx
mov ecx, dword [esp + 0x2cc]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x474]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2d0]
mov dword [esp], eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x1c], 0xffffffff
call fcn.0042fd40
mov ecx, 0x10
mov dword [esp + 0x2cc], eax
mov edi, dword [esp + 0x404]
jmp 0x519d39
mov eax, dword [esp + 0x4fc]
mov ecx, dword [esp + 0x268]
mov ecx, dword [ecx]
mov edx, dword [esp + 0x158]
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.007c51d0
mov dword [esp + 0x438], 0
mov dword [esp + 0x440], ebx
mov dword [esp + 0x44c], eax
mov dword [esp + 0x424], eax
jmp 0x512760
cmp eax, 0x10
jne 0x516b1e
mov dword [esp + 0x424], ecx
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
je 0x516b2a
mov dword [esp + 0x44c], edx
mov esi, 5
mov byte [esp + 0x223], 0x1d
mov byte [esp + 0x257], 0x46
mov byte [esp + 0x3dc], 0x3a
mov eax, dword [esp + 0x224]
mov eax, dword [eax]
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0x504]
mov dword [esp + 0x188], eax
test eax, eax
je 0x519c81
mov edi, 0x13
xor eax, eax
test al, al
je 0x518f11
jmp 0x519c81
mov dword [esp + 0x440], ebx
jmp 0x5199da
mov dword [esp + 0x440], ebx
jmp 0x51a0d8
cmp esi, 2
jne 0x516b49
mov ebx, eax
mov dword [esp + 0x474], ecx
jmp 0x516a5c
mov dword [esp + 0x404], ecx
mov dword [esp + 0x440], eax
mov eax, 0x17
mov ecx, 7
mov byte [esp + 0x33f], 0xa
mov edx, dword [esp + 0x484]
mov dword [esp + 0x1ac], edx
test edx, edx
mov edi, dword [esp + 0x3e0]
mov esi, dword [esp + 0x3d8]
mov edx, dword [esp + 0x464]
jne 0x518878
mov dword [esp + 0x464], edx
mov dword [esp + 0x3d8], esi
mov dword [esp + 0x3e0], edi
cmp ecx, 7
je 0x516bd6
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
mov ebx, dword [esp + 0x440]
jne 0x51318c
jmp 0x5195b0
mov ebx, dword [esp + 0x440]
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
jmp 0x5195b0
mov eax, dword [esp + 0x290]
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0x294]
mov dword [esp + 0x58], eax
mov eax, 0x11
mov esi, dword [esp + 0x494]
cmp esi, 2
ja 0x516c8e
mov ecx, esi
imul ecx, ecx
and ecx, 3
cmp ecx, 2
je 0x516c8e
mov dl, 0x75
mov eax, 0x19
movzx edx, dl
cmp edx, 0x50
je 0x516dde
mov eax, 0xe
cmp edx, 0x75
jne 0x516e04
mov byte [esp + 0x24b], 0x11
mov byte [esp + 0x207], 0x34
cmp esi, 2
mov dword [esp + 0x128], esi
jne 0x51735b
mov esi, 6
cmp ecx, 2
mov dword [esp + 0x440], ebx
mov eax, dword [esp + 0x58]
mov dword [esp + 0x1c0], eax
jb 0x51759b
jmp 0x5192ec
mov byte [esp + 0x24b], 0x11
mov dword [esp + 0x128], esi
mov dword [esp + 0x440], ebx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x1c0], ecx
mov edx, dword [esp + 0x28c]
cmp eax, 0xb
jne 0x516d1c
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
test ecx, ecx
je 0x516d1c
mov byte [esp + 0x328], 0x7b
mov eax, dword [esp + 0x198]
mov esi, dword [eax]
test edx, edx
je 0x516ea3
mov eax, edx
or eax, 2
mov ecx, edx
mov dword [esp + 0x28c], edx
xor ecx, 2
add ecx, eax
mov dl, byte [esp + 0x3a8]
mov edi, dword [esp + 0x460]
mov ebx, dword [esp + 0x288]
je 0x516ebf
test esi, esi
jne 0x51339f
jmp 0x516ebf
mov dword [esp + 0x28c], edx
mov eax, 6
mov ecx, dword [esp + 0x48c]
mov dword [esp + 0x1f0], ecx
test ecx, ecx
je 0x5192ec
cmp eax, 6
mov edx, dword [esp + 0x474]
mov ebx, dword [esp + 0x440]
je 0x518fcb
mov esi, edx
mov eax, 0xe
movzx edx, byte [esp + 0x2fd]
cmp edx, 0xb
je 0x516e5c
mov eax, 0xb
mov ecx, 0x16
cmp edx, 0x1e
mov dword [esp + 0x474], esi
jne 0x519b85
cmp eax, 0xb
je 0x516e27
xor eax, eax
test al, al
jne 0x516e27
mov al, 0x21
mov dword [esp + 0x314], eax
mov eax, dword [esp + 0x10c]
mov dword [esp], eax
call fcn.00627720
mov dword [esp + 0x480], 0
mov dword [esp + 0x46c], eax
mov dword [esp + 0x478], eax
mov dword [esp + 0x468], eax
mov dword [esp + 0x464], eax
jmp 0x517189
mov byte [esp + 0x24b], 0x11
mov dword [esp + 0x128], esi
mov dword [esp + 0x440], ebx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x1c0], ecx
jmp 0x517372
mov byte [esp + 0x24b], 0x11
mov dword [esp + 0x128], esi
mov edx, ebx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x1c0], ecx
mov ecx, edx
jmp 0x518c0d
mov eax, 5
mov ecx, 1
mov byte [esp + 0x2fd], 0xb
mov edx, dword [esp + 0xf4]
cmp dword [edx], 0
mov edx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], edx
jne 0x519383
jmp 0x517f59
mov dword [esp + 0x474], esi
cmp eax, 3
jne 0x516e78
mov ecx, eax
or ecx, 2
xor eax, 2
add eax, ecx
jne 0x519abc
mov byte [esp + 0x2fd], 0x1e
mov eax, dword [esp + 0xf4]
cmp dword [eax], 0
mov eax, dword [esp + 0x2d4]
mov dword [esp + 0x45c], eax
je 0x514ac5
jmp 0x519bdc
mov dword [esp + 0x28c], edx
mov dl, byte [esp + 0x3a8]
mov edi, dword [esp + 0x460]
mov ebx, dword [esp + 0x288]
mov dword [esp + 0x288], ebx
mov dword [esp + 0x460], edi
mov dword [esp + 0x168], esi
mov byte [esp + 0x3a8], dl
mov eax, 0x10
test esi, esi
jne 0x517042
cmp eax, 8
mov ecx, dword [esp + 0x440]
je 0x516f84
imul eax, eax
and eax, 3
cmp eax, 3
je 0x516f8b
movzx eax, byte [esp + 0x30b]
cmp eax, 0xe
jne 0x516f92
mov eax, 0xe
mov ecx, 0x10
mov byte [esp + 0x30b], 0x2d
mov edx, dword [esp + 0x3fc]
mov edx, dword [edx]
mov esi, edx
and esi, 1
inc esi
xor esi, edx
sete bl
movzx esi, bl
cmp edx, esi
mov edi, dword [esp + 0x460]
mov edx, dword [esp + 0x23c]
jne 0x516fbe
cmp ecx, 0xb
jne 0x517034
mov byte [esp + 0x35c], 0x14
mov eax, dword [edx + edi*4]
mov dword [esp + 0x23c], edx
mov dword [esp + 0x420], eax
mov dword [esp + 0x460], edi
mov ebx, dword [esp + 0x440]
jmp 0x518bb2
mov ebx, ecx
jmp 0x515956
mov ebx, ecx
jmp 0x515956
mov byte [esp + 0x30b], 0xe
mov eax, dword [esp + 0x3fc]
mov eax, dword [eax]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
cmp eax, ecx
je 0x517042
jmp 0x516fe4
cmp eax, 0xe
jne 0x51729e
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
je 0x51729e
mov dword [esp + 0x23c], edx
mov dword [esp + 0x460], edi
mov eax, 0x12
movzx ecx, byte [esp + 0x2f3]
cmp ecx, 0x79
jne 0x5172ed
mov ecx, 0xe
mov byte [esp + 0x2f3], 1
mov eax, dword [esp + 0x460]
shl eax, 6
mov esi, dword [esp + 0x288]
lea edx, [esi + eax + 0x14]
mov dword [esp + 0x98], edx
mov eax, dword [esi + eax + 0x14]
test eax, eax
jne 0x5132c3
jmp 0x5192d9
mov dword [esp + 0x23c], edx
mov dword [esp + 0x460], edi
mov eax, dword [esp + 0x460]
shl eax, 6
mov ecx, dword [esp + 0x288]
mov esi, dword [ecx + eax + 0x14]
test esi, esi
jne 0x517131
mov eax, 2
mov ecx, esi
or ecx, 2
mov edx, esi
xor edx, 2
add edx, ecx
je 0x517131
mov dword [esp + 0x134], esi
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], ecx
cmp eax, 2
je 0x514ac5
mov esi, 1
movzx eax, byte [esp + 0x344]
cmp eax, 0xc
jne 0x5171e7
mov ecx, dword [esp + 0x440]
mov eax, esi
not eax
and eax, 1
add eax, esi
setne al
movzx eax, al
cmp esi, eax
jne 0x51712a
mov dword [esp + 0x440], ecx
mov esi, 6
mov byte [esp + 0x344], 0xc
mov dword [esp + 4], 0x14
mov dword [esp], 1
call fcn.00493840
mov dword [esp + 0x2d0], 0x70000003
test eax, eax
jne 0x51730e
mov ecx, 3
sub ecx, eax
xor ecx, eax
mov dword [esp + 0x410], eax
mov edx, eax
mov dword [esp + 0x2c8], eax
mov dword [esp + 0x450], eax
jne 0x519c46
jmp 0x517323
mov ebx, ecx
jmp 0x510222
mov ecx, 6
movzx eax, byte [esp + 0x308]
cmp eax, 9
jne 0x5171a5
mov dword [esp + 0x134], esi
mov eax, dword [esp + 0x2d4]
mov ebx, eax
mov esi, dword [esp + 0x3e0]
mov edi, dword [esp + 0x3d8]
mov dword [esp + 0x3d8], edi
mov dword [esp + 0x3e0], esi
cmp ecx, 6
je 0x513770
xor eax, eax
test al, al
jne 0x513770
mov dword [esp + 0x45c], ebx
xor eax, eax
mov esi, dword [esp + 0x3e0]
mov edi, dword [esp + 0x3d8]
mov ebx, dword [esp + 0x464]
jmp 0x5121dd
mov eax, 0xd
mov byte [esp + 0x308], 9
mov ecx, dword [esi]
mov dword [esp + 0x134], esi
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 2
sete dl
movzx edx, dl
cmp ecx, edx
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], ecx
jne 0x513796
jmp 0x518550
mov esi, 0xf
mov edi, 7
mov byte [esp + 0x344], 0x32
mov dword [esp + 4], 0x14
mov dword [esp], 1
call fcn.00493840
mov dword [esp + 0x450], eax
mov dword [esp + 0x44c], 0x70000003
test eax, eax
mov dword [esp + 0x410], eax
mov dword [esp + 0x424], eax
je 0x517269
cmp edi, 7
jne 0x517247
mov eax, edi
and eax, 1
xor eax, edi
not eax
test eax, eax
jne 0x5110e7
mov byte [esp + 0x390], 0x77
imul eax, dword [esp + 0x2e0], 0x1c
mov ecx, dword [esp + 0x2b0]
mov eax, dword [ecx + eax + 0x18]
mov eax, dword [eax]
jmp 0x51973a
cmp esi, 0xf
je 0x517292
xor eax, eax
test al, al
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
mov edx, dword [esp + 0x424]
je 0x518966
jmp 0x519c46
mov eax, dword [esp + 0x44c]
jmp 0x512560
mov dword [esp + 0x23c], edx
mov dword [esp + 0x460], edi
mov eax, 0xf
mov byte [esp + 0x107], 0x22
mov ecx, dword [esp + 0x4f4]
mov dword [esp + 0x124], ecx
mov dword [esp + 0x4f8], ecx
mov ecx, dword [esp + 0x178]
cmp dword [ecx], 0
je 0x512918
xor ecx, ecx
test cl, cl
je 0x51616a
jmp 0x512918
mov dl, byte [esp + 0x3a8]
mov esi, dword [esp + 0x168]
mov edi, dword [esp + 0x460]
mov ebx, dword [esp + 0x288]
jmp 0x51325c
mov dword [esp + 0x2c8], eax
mov dword [esp + 0x410], eax
mov dword [esp + 0x450], eax
cmp esi, 6
mov eax, dword [esp + 0x2d0]
mov dword [esp + 0x44c], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 0x424], eax
mov eax, dword [esp + 0x2c8]
mov dword [esp + 0x450], eax
je 0x5110e7
jmp 0x512a4f
mov dword [esp + 0x440], ebx
mov eax, dword [esp + 0x58]
mov dword [esp + 0x1c0], eax
jmp 0x5192ec
cmp eax, 9
jne 0x517388
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
test ecx, ecx
jne 0x51125e
mov esi, 0x17
mov byte [esp + 0x207], 0x34
cmp dword [esp + 0x128], 2
jne 0x5192ec
cmp esi, 0xc
je 0x519684
imul esi, esi
and esi, 3
cmp esi, 3
jne 0x518d2a
jmp 0x519684
mov esi, 7
mov byte [esp + 0x207], 0x7b
mov eax, dword [esp + 0x498]
mov edi, dword [esp + 0x48c]
mov dword [esp + 0x1f0], edi
cmp eax, 0x22
sbb dl, dl
mov ecx, eax
or ecx, 2
xor eax, 2
add eax, ecx
setne ah
test edi, edi
sete al
mov ecx, edi
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sbb cl, cl
test dl, ah
jne 0x517412
and cl, al
je 0x518fac
cmp esi, 7
mov ecx, dword [esp + 0x460]
je 0x5192ec
xor eax, eax
test al, al
jne 0x5192ec
xor edi, edi
shl ecx, 6
mov dword [esp + 0x2c0], ecx
mov eax, dword [esp + 0x2cc]
jmp 0x51753c
mov byte [esp + 0x428], 0x6d
inc edi
mov eax, dword [esp + 0x330]
mov ecx, dword [esp + 0x460]
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x404], eax
mov eax, dword [esp + 0x3d4]
mov ecx, dword [eax]
mov esi, dword [esp + 0x2c0]
mov edx, dword [ecx + esi + 0x10]
mov eax, dword [edx]
mov dword [esp + 0x2c8], eax
mov eax, dword [esp + 0x458]
mov ebx, dword [eax]
mov eax, dword [ecx + esi]
mov dword [esp + 0x2d0], eax
mov eax, dword [ecx + esi + 4]
mov ecx, dword [ecx + esi + 0xc]
mov edx, dword [esp + 0x47c]
mov esi, dword [edx]
mov dword [esp + 0x2cc], esi
mov edx, dword [edx + 4]
mov esi, dword [esp + 0x404]
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x2c8]
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0x2d0]
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov eax, dword [esp + 0x2cc]
mov dword [esp], eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x1c], 0xffffffff
call fcn.0042fd40
mov ecx, edi
not ecx
and ecx, 1
add ecx, edi
setne cl
movzx ecx, cl
cmp edi, ecx
jb 0x517450
jmp 0x515d6d
mov esi, 0x11
add eax, edi
setne al
movzx eax, al
add edi, eax
mov dword [esp], ebx
mov dword [esp + 4], 0x34
call fcn.0064bf00
mov eax, edi
not eax
and eax, 1
mov ecx, edi
add ecx, eax
setne cl
movzx ecx, cl
cmp edi, ecx
jb 0x517560
mov ebx, dword [esp + 0x2a0]
cmp esi, 6
je 0x5175bb
imul esi, esi
and esi, 3
cmp esi, 2
mov dword [esp + 0x440], ebx
jne 0x5192ec
jmp 0x518d2a
mov dword [esp + 0x440], ebx
jmp 0x518d2a
mov byte [esp + 0x24b], 0x11
mov byte [esp + 0x223], 2
mov byte [esp + 0x213], 0xa
lea eax, [esp + 0x510]
mov dword [esp + 0x164], eax
mov ecx, dword [esp + 0x510]
mov dword [esp + 0x1ec], ecx
mov eax, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete al
movzx eax, al
mov dword [esp + 0x234], 0
cmp ecx, eax
lea eax, [esp + 0x50c]
mov dword [esp + 0x224], eax
je 0x519353
mov esi, 0xb
mov eax, dword [esp + 0x224]
mov eax, dword [eax]
mov edi, dword [esp + 0x234]
lea ecx, [edi + edi*2]
mov eax, dword [eax + ecx*8 + 0x14]
test eax, eax
je 0x51766e
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0x164]
mov eax, dword [eax]
mov dword [esp + 0x1a0], eax
mov dword [esp + 0x194], edi
jmp 0x5176b2
mov ebx, dword [esp + 0x440]
mov eax, dword [esp + 0x1ec]
mov dword [esp + 0x194], edi
mov dword [esp + 0x234], edi
mov dword [esp + 0x1a0], eax
cmp esi, 0xb
jne 0x517745
mov eax, esi
and eax, 1
xor eax, esi
not eax
test eax, eax
mov dword [esp + 0x440], ebx
je 0x517745
mov eax, 0x12
movzx ecx, byte [esp + 0x213]
cmp ecx, 0xa
jne 0x5178c1
mov edx, dword [esp + 0x21c]
cmp eax, 4
je 0x517898
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
je 0x517898
mov dword [esp + 0x21c], edx
mov eax, 7
mov byte [esp + 0x213], 0xa
mov edx, dword [esp + 0x194]
mov ecx, edx
not ecx
and ecx, 1
add ecx, edx
setne cl
movzx esi, cl
add esi, edx
mov edx, dword [esp + 0x1a0]
cmp esi, edx
jb 0x517a0d
mov ecx, esi
mov dword [esp + 0x234], esi
imul ecx, ecx
and ecx, 3
cmp ecx, 3
mov dword [esp + 0x1ec], edx
jne 0x519353
jmp 0x5191ff
movzx eax, byte [esp + 0x1db]
cmp eax, 4
je 0x51798b
mov ecx, 0xd
cmp eax, 0x70
je 0x510038
mov edi, dword [esp + 0x278]
mov dword [esp + 0x278], edi
cmp ecx, 5
je 0x51793b
imul ecx, ecx
and ecx, 3
cmp ecx, 3
je 0x51793b
mov esi, 0xd
mov byte [esp + 0x1db], 0x70
mov eax, dword [esp + 0x540]
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
mov dword [esp + 0x4b0], eax
mov eax, dword [esp + 0x264]
mov eax, dword [eax]
mov dword [esp + 0x4b4], eax
mov dword [esp + 0x4b8], 0xfffffff8
lea eax, [esp + 0x4f8]
mov dword [esp + 8], eax
lea eax, [esp + 0x4fc]
mov dword [esp + 4], eax
lea eax, [esp + 0x4a8]
mov dword [esp], eax
call fcn.00593400
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x518297
cmp esi, 8
jne 0x5100ac
mov eax, 3
sub eax, esi
xor eax, esi
je 0x5100ac
movzx eax, byte [esp + 0x2ff]
cmp eax, 0x18
je 0x517a69
cmp eax, 0x52
mov ecx, dword [esp + 0x2e0]
jne 0x517aca
mov esi, 0xe
mov byte [esp + 0x2ff], 0x52
mov dword [esp + 0x484], 0
mov eax, dword [esp + 0x200]
mov eax, dword [eax]
imul ecx, ecx, 0x1c
mov edx, dword [eax + ecx + 0x14]
mov eax, dword [eax + ecx + 0x18]
lea ecx, [esp + 0x484]
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.006274b0
test eax, eax
jne 0x5195b0
jmp 0x5155d7
mov byte [esp + 0x324], 0x18
mov eax, dword [edx]
mov dword [esp + 0x21c], edx
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
cmp eax, ecx
jmp 0x51268a
mov byte [esp + 0x213], 0xb
mov eax, 3
mov ecx, dword [esp + 0x194]
sub eax, ecx
xor eax, ecx
setne al
movzx edx, al
add edx, ecx
mov ecx, dword [esp + 0x1a0]
cmp edx, ecx
jae 0x517a20
mov esi, 0xd
mov eax, edx
mov dword [esp + 0x234], edx
imul eax, eax
and eax, 3
cmp eax, 2
mov dword [esp + 0x1ec], ecx
mov ebx, dword [esp + 0x50]
jae 0x519353
cmp esi, 4
jne 0x517a60
mov eax, esi
and eax, 1
xor eax, esi
not eax
test eax, eax
jne 0x50f257
mov dword [esp + 0x50], ebx
jmp 0x51762d
mov esi, 0xf
mov byte [esp + 0x398], 0x44
mov edx, dword [esp + 0x1d0]
mov eax, edx
and eax, 1
xor eax, edx
cmp eax, 0xffffffff
setne al
movzx ecx, al
add ecx, edx
mov eax, dword [esp + 0x1d4]
cmp ecx, dword [eax]
jae 0x517a33
mov eax, 3
sub eax, ecx
xor eax, ecx
mov dword [esp + 0x24c], ecx
jne 0x511d44
jmp 0x517a3a
mov byte [esp + 0x1db], 4
mov eax, dword [esp + 0x540]
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
mov dword [esp + 0x4b0], eax
mov eax, dword [esp + 0x264]
mov eax, dword [eax]
mov dword [esp + 0x4b4], eax
mov dword [esp + 0x4b8], 0xfffffff8
lea eax, [esp + 0x4f8]
mov dword [esp + 8], eax
lea eax, [esp + 0x4fc]
mov dword [esp + 4], eax
lea eax, [esp + 0x4a8]
mov dword [esp], eax
call fcn.00593400
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
je 0x5100ac
jmp 0x518297
mov dword [esp + 0x234], esi
mov dword [esp + 0x1ec], edx
jmp 0x5191ff
mov dword [esp + 0x234], edx
mov dword [esp + 0x1ec], ecx
jmp 0x519353
mov dword [esp + 0x24c], ecx
cmp esi, 0xf
jne 0x516a5c
mov eax, esi
and eax, 1
xor eax, esi
not eax
test eax, eax
mov dword [esp + 0x440], ebx
jne 0x511fa3
jmp 0x516a5c
mov dword [esp + 0x50], ebx
jmp 0x51762d
mov esi, 0xd
mov dword [esp + 0x484], 0
mov eax, dword [esp + 0x200]
mov eax, dword [eax]
imul ecx, dword [esp + 0x2e0], 0x1c
mov edx, dword [eax + ecx + 0x14]
mov eax, dword [eax + ecx + 0x18]
mov edi, 4
mov byte [esp + 0x2ff], 0x2c
lea ecx, [esp + 0x484]
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.006274b0
test eax, eax
mov eax, dword [esp + 0x424]
jne 0x519591
jmp 0x515ff1
mov esi, 0x13
mov byte [esp + 0x2ff], 0x18
mov dword [esp + 0x484], 0
mov eax, dword [esp + 0x200]
mov eax, dword [eax]
imul ecx, ecx, 0x1c
mov edx, dword [eax + ecx + 0x14]
mov eax, dword [eax + ecx + 0x18]
lea ecx, [esp + 0x484]
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.006274b0
test eax, eax
jne 0x515b93
mov esi, 5
movzx eax, byte [esp + 0x33f]
cmp eax, 0x14
je 0x517b3d
mov ecx, 0xe
cmp eax, 0x52
jne 0x517b4b
mov eax, dword [esp + 0x2cc]
jmp 0x517e8a
mov eax, ebx
mov ecx, dword [esp + 0x474]
jmp 0x516b36
mov dword [esp + 0x5c], 0x10
mov byte [esp + 0x33f], 0x14
mov eax, dword [esp + 0x484]
mov dword [esp + 0x1ac], eax
test eax, eax
jne 0x515d44
jmp 0x5195b0
mov esi, 0x1d
mov byte [esp + 0x223], 2
mov byte [esp + 0x257], 0x46
mov byte [esp + 0x3dc], 0x3a
mov eax, dword [esp + 0x224]
mov eax, dword [eax]
mov dword [esp], eax
call fcn.004936c0
mov ecx, dword [esp + 0x504]
test ecx, ecx
jne 0x517bca
mov eax, 3
sub eax, ecx
xor eax, ecx
mov dword [esp + 0x188], ecx
jne 0x519ca7
jmp 0x517f2e
mov dword [esp + 0x188], ecx
jmp 0x517f2e
mov esi, 4
mov byte [esp + 0x3dc], 0x5f
inc edi
mov dword [esp], ebx
mov dword [esp + 4], 0x2a
call fcn.0064bf00
mov eax, edi
imul eax, eax
and eax, 3
cmp eax, 2
sbb eax, eax
and eax, 1
cmp edi, eax
jb 0x517be0
mov eax, dword [esp + 0x2a0]
mov edi, dword [esp + 0x44c]
mov edx, dword [esp + 0x424]
mov dword [esp + 0x440], eax
cmp esi, 4
je 0x517c5c
imul esi, esi
and esi, 3
cmp esi, 3
mov dword [esp + 0x44c], edi
mov dword [esp + 0x2d0], edi
mov dword [esp + 0x424], edx
jne 0x519c46
jmp 0x519ca7
mov dword [esp + 0x44c], edi
mov dword [esp + 0x424], edx
jmp 0x519ca7
mov eax, dword [esp + 0x4fc]
mov dword [esp], eax
call fcn.004936c0
mov ecx, dword [esp + 0x500]
test ecx, ecx
je 0x517cd2
mov eax, ecx
imul eax, eax
and eax, 3
cmp eax, 3
je 0x517cd2
mov dword [esp + 0x11c], ecx
mov byte [esp + 0x257], 0x46
mov byte [esp + 0x133], 1
mov eax, 0xe
movzx ecx, byte [esp + 0x133]
cmp ecx, 0x45
je 0x519aa9
mov eax, dword [esp + 0x11c]
mov dword [esp], eax
call fcn.0062ddc0
mov eax, dword [esp + 0x1c0]
jmp 0x50c29c
cmp eax, 3
mov eax, dword [esp + 0x284]
mov dword [esp + 0x274], eax
mov ebx, dword [esp + 0x440]
mov esi, eax
je 0x516c0a
jmp 0x518e54
mov edx, 3
sub edx, esi
xor edx, esi
je 0x51a2a7
mov ecx, 0x14
movzx edx, byte [esp + 0xe3]
cmp edx, 0xf
je 0x517f7d
mov eax, 0x13
cmp edx, 0x47
jne 0x517f8e
mov dword [esp + 0x440], ebx
mov edi, dword [esp + 0x3c0]
mov edx, dword [esp + 0x44c]
cmp eax, 8
jne 0x517ef4
mov ecx, 3
sub ecx, eax
xor ecx, eax
je 0x517ef4
mov eax, dword [esp + 0x474]
mov dword [esp + 0x404], eax
mov dword [esp + 0x44c], edx
mov dword [esp + 0x3c0], edi
mov esi, 0x14
movzx eax, byte [esp + 0x428]
cmp eax, 0x16
jne 0x517ead
mov byte [esp + 0x428], 0x16
mov eax, dword [esp + 0x3d4]
mov eax, dword [eax]
mov esi, dword [esp + 0x460]
mov ecx, esi
shl ecx, 6
mov edx, dword [eax + ecx + 0x10]
mov edi, dword [eax + ecx]
mov dword [esp + 0x474], edi
mov ebx, dword [eax + ecx + 4]
mov eax, dword [eax + ecx + 0xc]
mov dword [esp + 0x2cc], eax
mov eax, dword [esp + 0x330]
mov ecx, dword [eax + esi*4]
mov edx, dword [edx]
mov eax, dword [esp + 0x458]
mov esi, dword [eax]
mov eax, dword [esp + 0x47c]
mov edi, dword [eax]
mov dword [esp + 0x2d0], edi
mov eax, dword [eax + 4]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ebx
mov ecx, dword [esp + 0x2cc]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x474]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2d0]
mov dword [esp], eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x1c], 0xffffffff
call fcn.0042fd40
mov ebx, dword [esp + 0x440]
mov ecx, dword [esp + 0x404]
mov dword [esp + 0x474], ecx
mov ecx, 0x1c
mov dword [esp + 0x2cc], eax
cmp ecx, 0xe
je 0x517ec0
imul ecx, ecx
and ecx, 3
cmp ecx, 3
je 0x517ec0
mov dword [esp + 0x440], ebx
jmp 0x515d74
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
jmp 0x517412
mov byte [esp + 0x33f], 0x52
mov ecx, dword [esp + 0x484]
test ecx, ecx
je 0x5181d7
mov eax, ecx
mov dword [esp + 0x1ac], ecx
imul eax, eax
and eax, 3
cmp eax, 3
jne 0x518b33
jmp 0x5195b0
mov dword [esp + 0x44c], edx
mov dword [esp + 0x3c0], edi
mov eax, 4
mov esi, 0xf
mov byte [esp + 0xe3], 0x3e
mov byte [esp + 0x1bf], 0x32
mov byte [esp + 0x1cf], 0x49
cmp dword [esp + 0x120], 0
jne 0x517f59
cmp esi, 0xf
mov ecx, dword [esp + 0x440]
jne 0x517f52
mov eax, esi
and eax, 1
xor eax, esi
not eax
test eax, eax
mov ebx, ecx
jne 0x5180ec
jmp 0x518f29
mov ebx, ecx
jmp 0x518f29
cmp eax, 4
jne 0x514ac5
imul eax, eax
and eax, 3
cmp eax, 2
mov ebx, dword [esp + 0x440]
jb 0x51800f
jmp 0x514ac5
cmp ecx, 0xc
jne 0x517fd7
mov dword [esp + 0x440], ebx
jmp 0x514ac5
mov eax, 6
mov byte [esp + 0xe3], 0x47
mov byte [esp + 0x1bf], 0x32
mov byte [esp + 0x1cf], 0x49
mov edx, dword [esp + 0x120]
mov ecx, edx
and ecx, 1
inc ecx
xor ecx, edx
sete cl
movzx ecx, cl
cmp edx, ecx
mov dword [esp + 0x440], ebx
mov edx, dword [esp + 0x474]
jne 0x51800f
jmp 0x5125c4
mov byte [esp + 0xe3], 0xf
mov byte [esp + 0x1bf], 0x32
mov byte [esp + 0x1cf], 0x49
mov ecx, dword [esp + 0x120]
mov eax, ecx
imul eax, eax
and eax, 3
cmp eax, 3
sete al
movzx eax, al
cmp ecx, eax
je 0x5180ec
mov dword [esp + 0x2a0], ebx
mov ecx, 0xf
movzx eax, byte [esp + 0x1cf]
cmp eax, 0x49
jne 0x5181c2
mov dword [esp + 0x45c], ebx
mov dword [esp + 0x3d8], edi
cmp ecx, 0xf
je 0x5180b1
imul ecx, ecx
and ecx, 3
cmp ecx, 2
je 0x5180b1
mov dword [esp + 0x3e0], esi
mov eax, 1
mov byte [esp + 0x348], 0xa
mov ecx, dword [esp + 0x17c]
mov esi, dword [ecx]
cmp esi, 3
mov ebx, dword [esp + 0x2a0]
jne 0x5181e3
mov ecx, esi
or ecx, 2
mov edx, esi
mov dword [esp + 0xc8], esi
xor edx, 2
add edx, ecx
mov dword [esp + 0x440], ebx
jne 0x510844
jmp 0x518d9a
mov dword [esp + 0x3e0], esi
mov byte [esp + 0x1cf], 0x49
mov eax, dword [esp + 0x120]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x1e8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x12c]
mov dword [esp], eax
call fcn.007c51d0
mov ebx, dword [esp + 0x2a0]
mov dword [esp + 0x2a0], ebx
mov bl, byte [esp + 0x1bf]
movzx eax, bl
cmp eax, 0x59
mov edi, dword [esp + 0x12c]
jne 0x51815b
mov eax, dword [esp + 0x300]
mov eax, dword [eax]
mov ecx, dword [esp + 0x1a8]
lea ecx, [ecx + ecx*2]
mov dword [eax + ecx*8 + 0x14], edi
mov eax, 9
mov byte [esp + 0x1bf], 0x59
mov dword [esp + 0x240], 0
mov ecx, dword [esp + 0x2a0]
mov dword [esp + 0x440], ecx
cmp eax, 9
mov ebx, dword [esp + 0x440]
je 0x510222
jmp 0x519099
xor eax, eax
mov ecx, dword [esp + 0x1a8]
lea ecx, [ecx + ecx*2]
jmp 0x518193
mov bl, 0x32
mov edx, eax
or edx, 2
mov esi, eax
xor esi, 2
add esi, edx
setne dl
movzx edx, dl
add eax, edx
mov edx, dword [esp + 0x300]
mov edx, dword [edx]
mov dword [edx + ecx*8 + 0x14], edi
mov edx, eax
imul edx, edx
and edx, 3
test eax, eax
je 0x518170
cmp edx, 2
je 0x518170
mov dword [esp + 0x240], 0
mov byte [esp + 0x1bf], bl
mov ebx, dword [esp + 0x2a0]
jmp 0x510222
mov dword [esp + 0x1ac], ecx
jmp 0x5195b0
mov dword [esp + 0xc8], esi
jmp 0x518d9a
mov esi, 0x12
mov byte [esp + 0x1e3], 0x22
mov byte [esp + 0x187], 0x7e
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
lea ecx, [esp + 0x504]
mov dword [esp + 8], ecx
lea ecx, [esp + 0x508]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.0059a8d0
mov dword [esp + 0x58], eax
test eax, eax
je 0x518256
mov edi, 0xe
xor eax, eax
test al, al
mov ebx, dword [esp + 0x50]
mov ecx, dword [esp + 0x424]
mov edx, dword [esp + 0x44c]
je 0x50f5ca
jmp 0x518268
mov ebx, dword [esp + 0x50]
mov ecx, dword [esp + 0x424]
mov edx, dword [esp + 0x44c]
mov dword [esp + 0x44c], edx
mov dword [esp + 0x424], ecx
cmp esi, 9
je 0x50f6d5
imul esi, esi
and esi, 3
cmp esi, 2
je 0x50f6d5
mov dword [esp + 0x50], ebx
jmp 0x518531
mov edx, 0x13
mov edi, 6
movzx ecx, byte [esp + 0x1e3]
cmp ecx, 0x22
mov dword [esp + 0x440], ebx
jne 0x518c71
cmp edx, 0xf
jne 0x5184d8
mov ecx, 3
sub ecx, edx
xor ecx, edx
je 0x5184d8
xor eax, eax
mov bl, byte [esp + 0x370]
mov esi, dword [esp + 0x3bc]
mov edi, dword [esp + 0x394]
jmp 0x51832d
mov bl, 0x44
xor ecx, eax
setne cl
movzx ecx, cl
add eax, ecx
mov ecx, dword [esp + 0x48c]
mov edx, dword [ecx]
mov dword [esi], edx
mov edx, dword [ecx + 4]
mov dword [edi], edx
mov edx, dword [ecx + 8]
mov dword [esp + 0x43c], edx
mov ecx, dword [esp + 0x444]
mov dword [ecx], edx
mov ecx, dword [esp + 0x474]
mov dword [esp + 0x454], ecx
mov ecx, 3
sub ecx, eax
mov edx, eax
xor edx, ecx
setne dl
movzx edx, dl
cmp eax, edx
jb 0x5182f0
mov byte [esp + 0x370], bl
mov eax, 9
mov ecx, 0xd
movzx edx, byte [esp + 0x3a0]
cmp edx, 0x19
jne 0x517372
cmp ecx, 0xd
je 0x5183b6
xor eax, eax
test al, al
jne 0x5183b6
mov eax, 0xc
mov byte [esp + 0x318], 0x5e
mov dword [esp + 0x480], 0
mov ecx, dword [esp + 0x208]
mov edx, dword [ecx]
cmp edx, 1
ja 0x519074
mov ecx, edx
and ecx, 1
xor ecx, edx
mov dword [esp + 0x108], edx
not ecx
test ecx, ecx
jne 0x51910a
jmp 0x51907b
mov eax, 0x19
mov byte [esp + 0x3a0], 5
mov ecx, dword [esp + 0x208]
mov ecx, dword [ecx]
mov dword [esp + 0x18c], ecx
cmp ecx, 7
mov ecx, dword [esp + 0x43c]
mov dword [esp + 0x250], ecx
mov ecx, dword [esp + 0x454]
mov dword [esp + 0x258], ecx
jae 0x518432
cmp eax, 0xb
jne 0x51865c
imul eax, eax
and eax, 3
cmp eax, 2
jae 0x51865c
xor esi, esi
mov ebx, dword [esp + 0x25c]
shl ebx, 6
mov dword [esp + 0x404], eax
mov edx, dword [esp + 0x284]
mov edi, dword [esp + 0x408]
jmp 0x511860
mov eax, 0x16
movzx ecx, byte [esp + 0x374]
cmp ecx, 0xf
jne 0x5112e6
mov edi, dword [esp + 0x3e0]
mov esi, dword [esp + 0x3d8]
cmp eax, 0xc
jne 0x518a98
mov ecx, 3
sub ecx, eax
xor ecx, eax
je 0x518a98
mov byte [esp + 0x2fc], 8
mov ecx, dword [esp + 0x47c]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x90]
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], esi
mov dword [esp + 0x3d8], esi
mov dword [esp + 0xc], edi
mov dword [esp + 0x3e0], edi
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], 0x80dc4c
call fcn.0043ab10
mov eax, dword [esp + 0x504]
mov eax, dword [eax + 8]
mov dword [esp + 0xa0], eax
jmp 0x510af4
mov esi, 1
mov byte [esp + 0x1e3], 0x1f
mov byte [esp + 0x187], 0x7e
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
lea ecx, [esp + 0x504]
mov dword [esp + 8], ecx
lea ecx, [esp + 0x508]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.0059a8d0
mov dword [esp + 0x58], eax
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x51414b
movzx ecx, byte [esp + 0x187]
cmp ecx, 0x17
je 0x5185f3
mov eax, 0x16
cmp ecx, 0x68
jne 0x5102ab
cmp eax, 0xd
je 0x514ac5
imul eax, eax
and eax, 3
cmp eax, 3
je 0x514ac5
mov esi, 6
mov byte [esp + 0x187], 0x17
mov ecx, dword [esp + 0x47c]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00412c70
mov eax, dword [esp + 0x504]
mov dword [esp + 0x338], eax
mov eax, dword [eax + 4]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
mov dword [esp + 0x2a8], 0
cmp eax, ecx
mov dword [esp + 0x2a4], 0
mov edi, dword [esp + 0x43c]
mov ecx, dword [esp + 0x440]
jne 0x518635
mov dword [esp + 0x43c], edi
cmp esi, 6
jne 0x5121fe
mov dword [esp + 0x440], ecx
jmp 0x512215
mov byte [esp + 0x187], 0x68
mov ecx, dword [esp + 0x47c]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00412c70
mov eax, dword [esp + 0x504]
mov dword [esp + 0x338], eax
mov dword [esp + 0x2a8], 0
cmp dword [eax + 4], 0
jmp 0x5102fa
mov dword [esp + 0x440], ecx
mov dword [esp + 0x43c], edi
cmp esi, 4
jne 0x51030b
mov eax, esi
or eax, 2
xor esi, 2
add esi, eax
je 0x51030b
mov eax, 0xc
movzx ecx, byte [esp + 0x384]
cmp ecx, 0x61
mov edx, dword [esp + 0x250]
mov edi, dword [esp + 0x3e0]
mov esi, dword [esp + 0x3d8]
je 0x51877d
cmp ecx, 0x65
jne 0x518901
mov byte [esp + 0x384], 0x65
test edx, edx
je 0x5113aa
mov eax, 0x19
mov ecx, edx
and ecx, 1
inc ecx
xor ecx, edx
mov ecx, dword [esp + 0x470]
mov dword [esp + 0x46c], ecx
mov dword [esp + 0x478], edi
mov dword [esp + 0x468], esi
mov ecx, dword [esp + 0x258]
mov dword [esp + 0x464], ecx
je 0x5113aa
cmp eax, 0xf
jne 0x519ae7
imul eax, eax
and eax, 3
cmp eax, 2
jae 0x519ae7
mov byte [esp + 0x320], 7
mov edx, dword [esp + 0x228]
mov eax, dword [edx]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
cmp eax, ecx
mov eax, dword [esp + 0x2d4]
mov dword [esp + 0x45c], eax
mov dword [esp + 0x20c], edx
jne 0x514ac5
mov eax, 3
mov dl, byte [esp + 0x378]
movzx ecx, dl
cmp ecx, 2
je 0x51917c
mov ecx, dword [esp + 0x474]
mov dword [esp + 0x404], ecx
cmp eax, 0xc
jne 0x5188bf
mov ecx, 3
sub ecx, eax
xor ecx, eax
je 0x5188bf
mov ecx, 9
mov eax, 7
mov byte [esp + 0x384], 0x34
test edx, edx
mov dword [esp + 0x250], edx
mov edx, dword [esp + 0x470]
mov dword [esp + 0x46c], edx
mov dword [esp + 0x478], edi
mov dword [esp + 0x468], esi
mov edx, dword [esp + 0x258]
jne 0x518878
mov dword [esp + 0x3d8], esi
cmp ecx, 1
jne 0x5188e7
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jae 0x5188e7
mov dword [esp + 0x464], edx
xor eax, eax
mov dl, byte [esp + 0x310]
mov esi, dword [esp + 0x460]
jmp 0x518844
mov dl, 0x3b
mov ecx, 3
sub ecx, eax
xor ecx, eax
setne cl
movzx ecx, cl
add eax, ecx
mov ecx, dword [esp + 0x48c]
mov ecx, dword [ecx + 0x10]
mov dword [ecx + esi*4], 0
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
setne cl
movzx ecx, cl
cmp eax, ecx
jb 0x518820
mov dword [esp + 0x3e0], edi
mov byte [esp + 0x310], dl
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
jmp 0x51318c
mov dword [esp + 0x464], edx
mov dword [esp + 0x3d8], esi
mov dword [esp + 0x3e0], edi
cmp eax, 7
jne 0x518b1e
mov ecx, 3
sub ecx, eax
xor ecx, eax
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
mov ebx, dword [esp + 0x440]
jne 0x519ae7
jmp 0x518b33
mov dword [esp + 0x3d8], esi
mov dword [esp + 0x3e0], edi
mov dword [esp + 0x250], edx
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
jmp 0x519e0d
mov dword [esp + 0x3e0], edi
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
jmp 0x5113aa
mov eax, 0xd
mov byte [esp + 0x384], 0x61
mov ecx, edx
and ecx, 1
inc ecx
xor ecx, edx
sete cl
movzx ecx, cl
cmp edx, ecx
mov ecx, dword [esp + 0x470]
mov dword [esp + 0x46c], ecx
mov dword [esp + 0x478], edi
mov dword [esp + 0x468], esi
mov ecx, dword [esp + 0x258]
mov dword [esp + 0x464], ecx
jne 0x519ae7
cmp eax, 2
jne 0x5113aa
mov ecx, 3
sub ecx, eax
xor ecx, eax
je 0x5113aa
movzx ecx, byte [esp + 0x334]
cmp ecx, 3
mov eax, dword [esp + 0x44c]
je 0x518a26
mov ebx, 0x1c
mov edi, 0x13
cmp ecx, 0x7c
mov dword [esp + 0x2d0], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
jne 0x5189fc
cmp ebx, 0xe
jne 0x5189da
mov eax, ebx
not eax
and eax, 1
add eax, ebx
je 0x5189da
mov eax, dword [esp + 0x2c8]
mov dword [esp + 0x450], eax
mov ebx, dword [esp + 0x440]
mov eax, dword [esp + 0x2d0]
mov dword [esp + 0x44c], eax
jmp 0x50fc66
mov byte [esp + 0x334], 8
cmp dword [esp + 0x1e4], 0
mov ebx, dword [esp + 0x460]
jne 0x513bcb
jmp 0x519230
cmp edi, 0xf
jne 0x513b8c
mov eax, dword [esp + 0x2c8]
mov dword [esp + 0x450], eax
mov eax, dword [esp + 0x2d0]
mov dword [esp + 0x44c], eax
jmp 0x514ac5
mov edi, 0xe
mov ecx, 0x16
mov byte [esp + 0x334], 3
mov esi, dword [esp + 0x1e4]
mov edx, esi
imul edx, edx
and edx, 3
cmp edx, 2
sete dl
movzx edx, dl
cmp esi, edx
jne 0x51a264
cmp edi, 0xe
je 0x51920d
imul edi, edi
and edi, 3
cmp edi, 2
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
mov ebx, dword [esp + 0x460]
jne 0x51984d
jmp 0x519230
mov dword [esp + 0x3d8], esi
mov eax, 6
mov byte [esp + 0x374], 0x59
mov edx, dword [esp + 0x18c]
cmp edx, 7
sete cl
imul edx, edx
and edx, 3
cmp edx, 2
sete ch
or ch, cl
mov edx, dword [esp + 0x214]
mov edx, dword [edx]
cmp edx, 0x64
setb cl
imul edx, edx
and edx, 3
cmp edx, 2
sete dl
movzx esi, ch
cmp esi, 1
jne 0x51939f
mov dword [esp + 0x3e0], edi
or cl, dl
je 0x5193a6
cmp dword [esp + 0x250], 0
mov ecx, dword [esp + 0x258]
mov dword [esp + 0x464], ecx
je 0x5113aa
jmp 0x5193b4
mov ebx, dword [esp + 0x440]
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
mov eax, 0x12
movzx ecx, byte [esp + 0x36c]
cmp ecx, 0xf
jne 0x518c0b
mov edi, 0xa
mov byte [esp + 0x36c], 0x1e
mov ecx, dword [esp + 0x47c]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.0042d060
mov ecx, dword [esp + 0x1ac]
mov esi, dword [ecx]
mov eax, esi
and eax, 1
inc eax
xor eax, esi
sete al
movzx eax, al
cmp esi, eax
mov dword [esp + 0x440], ebx
mov dword [esp + 0x400], ecx
jne 0x518c95
cmp edi, 0xa
mov dword [esp + 0x440], ebx
mov esi, dword [esp + 0x284]
je 0x518e54
mov ecx, 0x11
mov eax, 7
movzx edx, byte [esp + 0x430]
cmp edx, 0x66
mov edx, dword [esp + 0x2c4]
mov dword [esp + 0x54], edx
mov dword [esp + 0x440], ebx
jne 0x51241a
mov dword [esp + 0x2a0], ebx
xor esi, esi
cmp eax, 7
je 0x518bfb
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
jne 0x51a37c
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x2cc]
jmp 0x515d1b
mov ecx, ebx
mov dword [esp + 0x440], ecx
cmp eax, 0xe
je 0x518d01
xor eax, eax
test al, al
jne 0x518d01
mov edi, 0x16
mov byte [esp + 0x36c], 0xf
mov ecx, dword [esp + 0x47c]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.0042d060
mov ecx, dword [esp + 0x1ac]
mov esi, dword [ecx]
mov eax, esi
imul eax, eax
and eax, 3
cmp eax, 2
sete al
movzx eax, al
cmp esi, eax
mov dword [esp + 0x400], ecx
jne 0x518c95
cmp edi, 6
jne 0x518e4d
mov eax, 3
sub eax, edi
xor eax, edi
jne 0x5181ef
mov esi, dword [esp + 0x284]
jmp 0x518e54
mov bl, byte [esp + 0x3a8]
movzx eax, bl
xor ecx, ecx
cmp eax, 0x4a
jne 0x518dc0
mov eax, dword [esp + 0x1ac]
lea eax, [eax + 4]
mov dword [esp + 0x190], eax
jmp 0x518cd6
mov bl, 0x6d
mov eax, ecx
or eax, 2
mov edx, ecx
xor edx, 2
add edx, eax
setne al
movzx eax, al
add ecx, eax
mov eax, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sbb eax, eax
and eax, 1
cmp ecx, eax
jb 0x518cc0
mov dword [esp + 0x26c], 0
mov byte [esp + 0x3a8], bl
jmp 0x51154c
mov byte [esp + 0x207], 0x34
mov ecx, dword [esp + 0x128]
cmp ecx, 2
jne 0x5192ec
mov eax, ecx
and eax, 1
xor eax, ecx
not eax
test eax, eax
je 0x5192ec
movzx ecx, byte [esp + 0x207]
cmp ecx, 0x28
je 0x5173c0
mov eax, 4
cmp ecx, 0x7b
jne 0x518d93
mov ecx, 0x16
mov byte [esp + 0x207], 0x34
mov eax, dword [esp + 0x498]
mov edx, dword [esp + 0x48c]
cmp eax, 0x22
jb 0x5192c9
imul eax, eax
and eax, 3
cmp eax, 2
je 0x5192d2
test edx, edx
mov dword [esp + 0x1f0], edx
mov ebx, dword [esp + 0x440]
jne 0x518fcb
jmp 0x5192d9
mov ebx, dword [esp + 0x440]
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
setne cl
movzx ecx, cl
cmp eax, ecx
jne 0x518dd6
mov dword [esp + 0x440], ebx
mov esi, dword [esp + 0x474]
jmp 0x5108fd
mov eax, dword [esp + 0x1ac]
lea eax, [eax + 4]
mov dword [esp + 0x190], eax
jmp 0x511485
mov eax, 0xf
mov byte [esp + 0x207], 0x28
mov ecx, dword [esp + 0x498]
mov edi, dword [esp + 0x48c]
mov dword [esp + 0x1f0], edi
cmp ecx, 0x22
sbb dh, dh
mov esi, 3
sub esi, ecx
xor esi, ecx
setne ch
test edi, edi
sete cl
mov esi, edi
imul esi, esi
and esi, 3
cmp esi, 2
sbb dl, dl
test dh, ch
jne 0x518e27
and dl, cl
je 0x518fcb
cmp eax, 0xf
jne 0x518297
mov esi, dword [esp + 0x284]
mov al, byte [esp + 0x42c]
movzx eax, al
cmp eax, 0x55
jne 0x518eb5
mov edi, 6
mov byte [esp + 0x42c], 0x55
mov eax, dword [esp + 0x484]
mov dword [esp], eax
call fcn.006275f0
mov edx, esi
mov ecx, dword [esp + 0x440]
cmp edi, 6
jne 0x51900b
mov dword [esp + 0x284], edx
mov eax, edi
not eax
and eax, 1
add eax, edi
mov ebx, ecx
mov dword [esp + 0x440], ecx
jne 0x5195b0
jmp 0x519019
mov dword [esp + 0x404], esi
xor ebx, ebx
mov esi, 3
jmp 0x518eee
mov edi, 8
mov byte [esp + 0x42c], 0x39
inc ebx
mov eax, dword [esp + 0x484]
mov dword [esp], eax
call fcn.006275f0
dec esi
mov eax, ebx
xor eax, esi
setne al
movzx eax, al
cmp ebx, eax
jb 0x518ed0
mov eax, dword [esp + 0x404]
mov dword [esp + 0x284], eax
mov ebx, dword [esp + 0x440]
cmp edi, 8
je 0x5195b0
mov dword [esp + 0x2a0], ebx
movzx eax, byte [esp + 0x3dc]
cmp eax, 0x41
mov ebx, dword [esp + 0x188]
je 0x518fe0
xor edi, edi
cmp eax, 0x5f
je 0x517bfe
jmp 0x518f8b
mov esi, 0xc
mov byte [esp + 0x3dc], 0x41
mov eax, edi
imul eax, eax
and eax, 3
cmp eax, 2
adc edi, 0
mov dword [esp], ebx
mov dword [esp + 4], 0x2a
call fcn.0064bf00
mov eax, 3
sub eax, edi
xor eax, edi
setne al
movzx eax, al
cmp edi, eax
jb 0x518f60
mov eax, dword [esp + 0x2a0]
mov dword [esp + 0x440], eax
cmp esi, 7
jne 0x519ca7
mov eax, 3
sub eax, esi
xor eax, esi
mov ebx, dword [esp + 0x440]
je 0x519ca7
mov dword [esp + 0x2a0], ebx
xor edi, edi
mov ebx, dword [esp + 0x1f0]
jmp 0x51757f
mov byte [esp + 0x3dc], 0x3a
mov dword [esp], ebx
mov dword [esp + 4], 0x2a
call fcn.0064bf00
mov eax, dword [esp + 0x2a0]
mov dword [esp + 0x440], eax
jmp 0x519ca7
mov dword [esp + 0x440], ecx
mov dword [esp + 0x284], edx
mov al, byte [esp + 0x3ac]
movzx eax, al
cmp eax, 0x60
je 0x519042
mov edi, 4
cmp eax, 0x63
je 0x511887
mov eax, 0xc
mov byte [esp + 0x3ac], 0x60
mov esi, dword [esp + 0x25c]
lea edx, [esi + 1]
mov edi, dword [esp + 0x284]
cmp edx, edi
jb 0x511534
mov dword [esp + 0x108], edx
cmp eax, 7
je 0x5192bd
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
mov esi, dword [esp + 0x474]
je 0x5108fd
mov esi, 0xa
movzx eax, byte [esp + 0x354]
cmp eax, 0x1e
jne 0x511956
mov edi, dword [esp + 0x460]
mov ebx, dword [esp + 0x288]
cmp esi, 0xa
jne 0x5137eb
mov eax, 3
sub eax, esi
xor eax, esi
je 0x5137eb
mov dword [esp + 0x288], ebx
mov dword [esp + 0x460], edi
mov byte [esp + 0x354], 0x67
cmp dword [esp + 0x108], 2
jne 0x5119b6
mov eax, dword [esp + 0x214]
mov eax, dword [eax]
test eax, eax
jne 0x5119b6
movzx eax, byte [esp + 0x37c]
cmp eax, 0x1e
mov ecx, dword [esp + 0x2e0]
jne 0x511a66
mov eax, dword [esp + 0x200]
mov eax, dword [eax]
imul ecx, ecx, 0x1c
mov eax, dword [eax + ecx + 0x18]
mov dword [esp + 0x280], eax
mov dword [esp + 4], 0x40
mov dword [esp], 1
call fcn.00493840
test eax, eax
je 0x519164
xor ecx, ecx
test cl, cl
jne 0x519164
mov byte [esp + 0x37c], 0x1e
jmp 0x511ac3
mov dword [esp + 0x2d0], 0x70000003
mov byte [esp + 0x37c], 0x1e
jmp 0x511d31
cmp eax, 7
jne 0x514ac5
jmp 0x51762d
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
mov ebx, dword [esp + 0x460]
mov eax, dword [esp + 0xe8]
mov eax, dword [eax]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
cmp eax, ecx
mov eax, dword [esp + 0x3fc]
mov edi, dword [esp + 0x2d0]
jne 0x51928b
mov esi, 0xb
cmp dword [eax], 0
jne 0x5144cd
mov dword [esp + 0x460], ebx
mov eax, dword [esp + 0x2c8]
mov dword [esp + 0x450], eax
mov dword [esp + 0x44c], edi
jmp 0x51982c
movzx eax, byte [esp + 0x30a]
cmp eax, 0x47
jne 0x51425a
mov byte [esp + 0x30a], 0x47
mov esi, dword [esp + 0x28c]
mov eax, dword [esi]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jmp 0x514276
mov esi, dword [esp + 0x474]
jmp 0x5108fd
mov dword [esp + 0x1f0], edx
jmp 0x5192d9
mov dword [esp + 0x1f0], edx
cmp ecx, 0xe
je 0x519391
mov al, 1
test al, al
je 0x519391
movzx eax, byte [esp + 0x24b]
cmp eax, 0x34
jne 0x5175c7
mov ecx, 0xe
mov byte [esp + 0x24b], 0x34
mov byte [esp + 0x223], 2
mov byte [esp + 0x213], 0xa
lea eax, [esp + 0x510]
mov dword [esp + 0x164], eax
mov eax, dword [esp + 0x510]
mov dword [esp + 0x1ec], eax
mov dword [esp + 0x234], 0
test eax, eax
lea eax, [esp + 0x50c]
mov dword [esp + 0x224], eax
jne 0x519383
mov eax, 0x10
movzx ecx, byte [esp + 0x223]
cmp ecx, 2
jne 0x517b76
mov ebx, dword [esp + 0x440]
mov ecx, dword [esp + 0x424]
mov edx, dword [esp + 0x44c]
jmp 0x516aa8
cmp ecx, 1
jne 0x51762d
jmp 0x519bdc
xor esi, esi
mov edi, dword [esp + 0x98]
jmp 0x513757
mov dword [esp + 0x3e0], edi
mov ecx, dword [esp + 0x258]
mov dword [esp + 0x464], ecx
cmp eax, 6
mov edi, dword [esp + 0x3e0]
mov ebx, dword [esp + 0x3d8]
jne 0x510f45
mov eax, dword [esp + 0x470]
mov dword [esp + 0x46c], eax
mov dword [esp + 0x478], edi
mov dword [esp + 0x468], ebx
jmp 0x519ae7
mov byte [esp + 0x360], 0xd
imul eax, dword [esp + 0x2e0], 0x1c
mov ecx, dword [esp + 0x2b0]
cmp dword [ecx + eax + 0x14], 8
mov ecx, dword [esp + 0x54]
je 0x51943a
mov dword [esp + 0x2d0], 0x30000003
xor eax, eax
test al, al
mov dword [esp + 0x2c4], ecx
mov dword [esp + 0x440], ebx
mov edx, dword [esp + 0x474]
je 0x519c46
jmp 0x51944f
mov dword [esp + 0x440], ebx
mov edx, dword [esp + 0x474]
mov dword [esp + 0x2c4], ecx
mov eax, 0xf
mov bl, byte [esp + 0x388]
movzx ecx, bl
cmp ecx, 0x33
je 0x51948e
mov edi, 0xa
cmp ecx, 0x43
jne 0x519576
mov dword [esp + 0x404], edx
xor eax, eax
imul ecx, dword [esp + 0x2e0], 0x1c
mov edi, dword [esp + 0x2b0]
jmp 0x510966
mov dword [esp + 0x44c], 0x30000003
mov dword [esp + 0x474], edx
mov dword [esp + 0x424], edx
xor ecx, ecx
cmp eax, 3
mov edi, dword [esp + 0x2e0]
jne 0x5194c4
imul eax, eax
and eax, 3
cmp eax, 2
jb 0x511fa3
mov dword [esp + 0x404], eax
mov bl, byte [esp + 0x388]
mov esi, dword [esp + 0x2b0]
mov eax, dword [esp + 0x468]
jmp 0x51953d
mov dword [esp + 0x404], 4
mov bl, 0x33
mov edx, ecx
not edx
and edx, 1
add edx, ecx
setne dl
movzx edx, dl
add ecx, edx
imul edx, edi, 0x1c
mov edx, dword [esi + edx + 0x18]
mov eax, dword [edx]
mov dword [esp + 0x478], eax
mov eax, dword [edx + 4]
mov edx, dword [esp + 0x470]
mov dword [esp + 0x46c], edx
mov edx, dword [esp + 0x474]
mov dword [esp + 0x464], edx
mov edx, ecx
imul edx, edx
and edx, 3
test ecx, ecx
je 0x5194f0
cmp edx, 3
je 0x5194f0
mov dword [esp + 0x468], eax
mov dword [esp + 0x2b0], esi
mov byte [esp + 0x388], bl
mov edx, dword [esp + 0x474]
mov eax, dword [esp + 0x404]
jmp 0x519d9c
mov dword [esp + 0x44c], 0x30000003
mov ebx, dword [esp + 0x440]
mov dword [esp + 0x474], edx
mov eax, edx
mov dword [esp + 0x424], eax
cmp edi, 4
jne 0x5197dd
mov eax, 3
sub eax, edi
xor eax, edi
je 0x5197dd
mov edx, ebx
mov esi, 0x17
mov bl, byte [esp + 0x3b4]
movzx ecx, bl
cmp ecx, 0x1e
je 0x51962a
cmp eax, 0xe
jne 0x5148d5
mov dword [esp + 0x404], edx
xor eax, eax
cmp esi, 0xc
mov dl, byte [esp + 0x3b4]
mov edi, dword [esp + 0x3e0]
mov ebx, dword [esp + 0x3d8]
jne 0x519770
mov ecx, esi
or ecx, 2
xor esi, 2
add esi, ecx
mov esi, dword [esp + 0x46c]
je 0x5197b7
mov eax, dword [esp + 0x404]
mov dword [esp + 0x474], eax
movzx eax, byte [esp + 0x1c7]
cmp eax, 0x38
jne 0x5126db
mov esi, 0x11
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
mov ecx, dword [esp + 0x174]
mov dword [ecx], eax
mov eax, dword [esp + 0x264]
mov eax, dword [eax]
mov ecx, dword [esp + 0x170]
mov dword [ecx], eax
mov byte [esp + 0x1c7], 0x38
mov byte [esp + 0x1ff], 0x60
mov eax, dword [esp + 0x16c]
mov dword [eax], 0xffffffce
lea eax, [esp + 0x4ec]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x244]
mov dword [esp], eax
call fcn.005953b0
test eax, eax
je 0x519825
mov ecx, eax
mov dword [esp + 0x438], eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jne 0x512760
jmp 0x51982c
mov dword [esp + 0x46c], eax
mov eax, dword [esp + 0x3e0]
mov dword [esp + 0x478], eax
mov eax, dword [esp + 0x3d8]
mov dword [esp + 0x468], eax
mov eax, dword [esp + 0x474]
mov dword [esp + 0x464], eax
jmp 0x519ae7
mov esi, dword [esp + 0x46c]
jmp 0x5197b7
mov dl, 0x1d
mov ecx, eax
and ecx, 1
xor ecx, eax
cmp ecx, 0xffffffff
setne cl
movzx ecx, cl
add eax, ecx
mov esi, dword [esp + 0x470]
mov dword [esp + 0x478], edi
mov dword [esp + 0x468], ebx
mov ecx, dword [esp + 0x404]
mov dword [esp + 0x464], ecx
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
setne cl
movzx ecx, cl
cmp eax, ecx
jb 0x519780
mov dword [esp + 0x46c], esi
mov byte [esp + 0x3b4], dl
jmp 0x511454
mov byte [esp + 0x388], 0x43
imul eax, dword [esp + 0x2e0], 0x1c
mov ecx, dword [esp + 0x2b0]
mov eax, dword [ecx + eax + 0x18]
mov ecx, dword [eax]
mov dword [esp + 0x478], ecx
mov eax, dword [eax + 4]
mov dword [esp + 0x468], eax
mov dword [esp + 0x440], ebx
mov eax, dword [esp + 0x470]
mov dword [esp + 0x46c], eax
jmp 0x51975d
mov dword [esp + 0x438], eax
cmp esi, 0xb
mov ebx, dword [esp + 0x460]
mov ecx, dword [esp + 0x44c]
je 0x5198fc
xor eax, eax
test al, al
jne 0x5198fc
mov dword [esp + 0x460], ebx
movzx eax, byte [esp + 0x1ff]
cmp eax, 0x63
jne 0x519972
mov esi, 0x17
mov byte [esp + 0x1ff], 0x60
lea eax, [esp + 0x4f8]
mov dword [esp + 8], eax
lea eax, [esp + 0x4fc]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x244]
mov dword [esp], eax
call fcn.00593400
mov dword [esp + 0x2d0], eax
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
mov dword [esp + 0x22c], 0
cmp eax, ecx
mov ecx, dword [esp + 0x2ac]
mov edx, ecx
mov dword [esp + 0x44c], eax
mov dword [esp + 0x424], ecx
jne 0x519c46
cmp esi, 9
jne 0x512a7e
mov dword [esp + 0x44c], ecx
mov eax, ebx
shl eax, 6
mov ecx, dword [esp + 0x288]
mov ecx, dword [ecx + eax + 0x14]
test ecx, ecx
jne 0x51475d
mov eax, 9
mov edx, ecx
or edx, 2
mov esi, ecx
xor esi, 2
add esi, edx
je 0x51475d
mov dword [esp + 0x460], ebx
mov ebx, dword [esp + 0x440]
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], ecx
cmp eax, 9
je 0x5199e8
imul eax, eax
and eax, 3
cmp eax, 2
mov dword [esp + 0x440], ebx
jne 0x5158f3
jmp 0x514ac5
mov byte [esp + 0x1ff], 0x63
lea eax, [esp + 0x4f8]
mov dword [esp + 8], eax
lea eax, [esp + 0x4fc]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x244]
mov dword [esp], eax
call fcn.00593400
mov edx, eax
imul eax, eax
and eax, 3
cmp eax, 2
sete al
movzx eax, al
mov dword [esp + 0x22c], 0
cmp edx, eax
je 0x512a7e
mov eax, 0x1c
mov ecx, dword [esp + 0x2ac]
cmp eax, 0xf
je 0x5199f4
mov dword [esp + 0x2d0], edx
mov edx, ecx
jmp 0x519c46
mov dword [esp + 0x440], ebx
jmp 0x514ac5
cmp eax, 0xe
je 0x517cc3
xor eax, eax
test al, al
jne 0x517cc3
mov eax, dword [esp + 0x474]
mov dword [esp + 0x404], eax
jmp 0x513fb9
mov eax, 0xc
mov ecx, 0xd
mov edx, 3
mov esi, dword [esp + 0x2e0]
sub edx, esi
xor edx, esi
setne dl
movzx edi, dl
add edi, esi
mov dword [esp + 0x3f8], edi
mov edx, dword [esp + 0x504]
mov dword [esp + 0x3e4], edx
cmp edi, dword [edx + 4]
mov edx, dword [esp + 0x464]
mov dword [esp + 0x3f4], edx
mov esi, dword [esp + 0x478]
mov dword [esp + 0x3f0], esi
mov esi, dword [esp + 0x468]
mov dword [esp + 0x3ec], esi
mov esi, dword [esp + 0x46c]
mov dword [esp + 0x3e8], esi
mov dword [esp + 0x2a8], edx
mov dword [esp + 0x2a4], esi
jae 0x519b85
cmp eax, 0xc
je 0x510546
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
jne 0x515086
jmp 0x510546
cmp ecx, 0xd
je 0x512215
imul ecx, ecx
and ecx, 3
cmp ecx, 3
je 0x512215
mov eax, 0x12
mov byte [esp + 0x2fd], 0x24
mov ecx, dword [esp + 0xf4]
cmp dword [ecx], 0
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], ecx
jne 0x519bdc
cmp eax, 4
je 0x51651c
xor eax, eax
test al, al
je 0x514ac5
jmp 0x51651c
mov edi, 0x17
mov bl, byte [esp + 0x2fa]
movzx eax, bl
cmp eax, 0x4f
jne 0x519c05
cmp edi, 9
jne 0x514aa5
mov edx, dword [esp + 0x474]
jmp 0x5127f7
xor eax, eax
mov esi, dword [esp + 0xf4]
jmp 0x519c24
mov bl, 0x4f
inc eax
mov dword [esi], 0
mov dword [esp + 0x45c], 1
mov ecx, eax
or ecx, 2
mov edx, eax
xor edx, 2
add edx, ecx
setne cl
movzx ecx, cl
cmp eax, ecx
jb 0x519c10
mov byte [esp + 0x2fa], bl
jmp 0x514ac5
mov esi, 3
test edx, edx
mov eax, dword [esp + 0x2d0]
mov dword [esp + 0x44c], eax
mov dword [esp + 0x424], edx
mov dword [esp + 0x294], eax
mov dword [esp + 0x290], edx
mov ebx, dword [esp + 0x440]
mov dword [esp + 0x58], eax
je 0x516c0a
cmp esi, 3
jne 0x519ca0
mov eax, esi
and eax, 1
xor eax, esi
not eax
test eax, eax
jne 0x516bf0
mov dword [esp + 0x440], ebx
jmp 0x519ca7
mov dword [esp + 0x440], ebx
mov ecx, 2
mov al, byte [esp + 0x257]
movzx eax, al
cmp eax, 0x1b
je 0x519d32
cmp eax, 0x71
jne 0x517c6f
mov byte [esp + 0x257], 0x1b
mov byte [esp + 0x133], 1
mov eax, dword [esp + 0x4fc]
mov dword [esp], eax
call fcn.004936c0
mov ecx, dword [esp + 0x500]
test ecx, ecx
jne 0x519df5
mov esi, 0xd
mov eax, ecx
mov dword [esp + 0x11c], ecx
imul eax, eax
and eax, 3
cmp eax, 2
jae 0x517cad
cmp esi, 7
je 0x519de9
mov eax, esi
and eax, 1
inc eax
xor eax, esi
mov ebx, dword [esp + 0x440]
jne 0x517cd2
jmp 0x516c0a
mov edi, dword [esp + 0x474]
cmp ecx, 2
je 0x519d54
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
je 0x519d54
mov dword [esp + 0x474], edi
jmp 0x515d74
mov esi, 0xb
mov byte [esp + 0x257], 0x71
mov byte [esp + 0x133], 1
mov eax, dword [esp + 0x4fc]
mov dword [esp], eax
call fcn.004936c0
mov ecx, dword [esp + 0x500]
test ecx, ecx
jne 0x519dc0
mov eax, 6
mov dword [esp + 0x11c], ecx
imul ecx, ecx
and ecx, 3
cmp ecx, 2
mov edx, edi
jae 0x519dc9
cmp eax, 4
jne 0x517cd2
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
mov dword [esp + 0x474], edx
jne 0x519ae7
jmp 0x517cd2
mov dword [esp + 0x11c], ecx
mov edx, edi
cmp esi, 0xb
jne 0x519e01
mov eax, 3
sub eax, esi
xor eax, esi
mov dword [esp + 0x474], edx
jne 0x517cad
jmp 0x514ac5
mov ebx, dword [esp + 0x440]
jmp 0x516c0a
mov dword [esp + 0x11c], ecx
jmp 0x517cad
mov dword [esp + 0x474], edx
jmp 0x514ac5
movzx eax, byte [esp + 0x39c]
cmp eax, 0x5d
jne 0x519e78
mov edi, 8
mov esi, 0xe
mov byte [esp + 0x39c], 0x5d
mov edx, dword [esp + 0x1dc]
mov eax, dword [edx]
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
mov eax, dword [esp + 0x2d4]
mov dword [esp + 0x45c], eax
mov dword [esp + 0x1b8], edx
je 0x5108d0
cmp edi, 8
je 0x514ac5
mov eax, edi
and eax, 1
inc eax
xor eax, edi
jne 0x519e0d
jmp 0x514ac5
mov eax, 0xf
mov byte [esp + 0x39c], 0x5c
mov esi, dword [esp + 0x1dc]
mov ecx, dword [esi]
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 3
sete dl
movzx edx, dl
cmp ecx, edx
mov dword [esp + 0x1b8], esi
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], ecx
jne 0x514ac5
cmp eax, 0xf
mov eax, dword [esp + 0x2d4]
mov dword [esp + 0x45c], eax
jne 0x514ac5
xor eax, eax
mov edx, dword [esp + 0x1b8]
mov esi, dword [esp + 0x28c]
mov ecx, dword [esp + 0x45c]
jmp 0x51412a
mov byte [esp + 0x2db], 0x55
mov eax, edi
or eax, 2
mov ecx, edi
xor ecx, 2
add ecx, eax
setne al
movzx eax, al
add edi, eax
mov dword [esp + 4], 4
mov dword [esp], 1
call fcn.00493a50
mov dword [esi], eax
mov ecx, edi
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sbb ecx, ecx
and ecx, 1
cmp edi, ecx
jb 0x519ef0
mov dword [esp + 0x54], eax
mov eax, 0xd
movzx edx, byte [esp + 0x364]
cmp edx, 0xf
je 0x51a098
mov eax, 0x13
mov ecx, 4
cmp edx, 0x5e
mov ebx, dword [esp + 0x440]
mov edx, dword [esp + 0x2c8]
mov dword [esp + 0x450], edx
mov edx, dword [esp + 0x2d0]
mov dword [esp + 0x44c], edx
mov edx, dword [esp + 0x54]
mov dword [esp + 0x2c4], edx
jne 0x51a03e
cmp ecx, 4
je 0x519fa0
xor eax, eax
test al, al
je 0x5193ec
mov eax, 0xd
mov byte [esp + 0x364], 0xf
mov esi, dword [esp + 0x54]
mov ecx, dword [esi]
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 2
sete dl
movzx edx, dl
cmp ecx, edx
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], ecx
mov dword [esp + 0x154], esi
mov dword [esp + 0x2c4], esi
je 0x51a230
cmp eax, 0xd
jne 0x51a393
mov ecx, 3
sub ecx, eax
xor ecx, eax
mov dword [esp + 0x440], ebx
mov eax, dword [esp + 0x54]
mov dword [esp + 0x154], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
mov eax, dword [esp + 0x2c4]
mov dword [esp + 0x54], eax
jne 0x514ac5
jmp 0x51a3cc
cmp eax, 0x10
jne 0x51a135
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
mov dword [esp + 0x440], ebx
mov eax, dword [esp + 0x2c4]
mov dword [esp + 0x54], eax
mov dword [esp + 0x45c], eax
xor eax, eax
mov esi, dword [esp + 0x3cc]
mov edi, dword [esp + 0x94]
mov ebx, dword [esp + 0x45c]
jmp 0x51489a
mov ecx, dword [esp + 0x2c8]
mov dword [esp + 0x450], ecx
mov ebx, dword [esp + 0x440]
mov edx, dword [esp + 0x2d0]
cmp eax, 0xc
jne 0x51a0eb
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
test ecx, ecx
je 0x51a0eb
mov eax, dword [esp + 0x54]
mov dword [esp + 0x2c4], eax
mov dword [esp + 0x440], ebx
mov dword [esp + 0x2d0], edx
mov edx, dword [esp + 0x424]
jmp 0x519c46
mov dword [esp + 0x44c], edx
mov eax, 0x15
mov byte [esp + 0x364], 0x5e
mov esi, dword [esp + 0x54]
mov ecx, dword [esi]
mov edx, ecx
and edx, 1
inc edx
xor edx, ecx
sete dl
movzx edx, dl
cmp ecx, edx
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], ecx
mov dword [esp + 0x154], esi
jne 0x518bdf
jmp 0x51a230
mov esi, 0xb
mov byte [esp + 0x364], 0x2c
mov ecx, dword [esp + 0x2c4]
cmp dword [ecx], 0
mov edx, dword [esp + 0x44c]
je 0x51a192
cmp esi, 0xb
je 0x51a202
xor eax, eax
test al, al
mov eax, dword [esp + 0x2c8]
mov dword [esp + 0x450], eax
mov eax, dword [esp + 0x2d0]
mov dword [esp + 0x44c], eax
mov ebx, dword [esp + 0x440]
mov eax, dword [esp + 0x2c4]
mov dword [esp + 0x54], eax
je 0x516c0a
jmp 0x51a230
mov eax, dword [esp + 0x2c8]
mov dword [esp + 0x450], eax
mov ebx, dword [esp + 0x440]
mov eax, dword [esp + 0x2d0]
mov dword [esp + 0x44c], eax
mov eax, dword [esp + 0x2c4]
mov dword [esp + 0x54], eax
mov al, byte [esp + 0x31c]
movzx edx, al
cmp edx, 0x36
je 0x51a357
mov ecx, 0xb
mov esi, 8
cmp edx, 0x48
mov eax, dword [esp + 0x54]
mov dword [esp + 0x2c4], eax
mov dword [esp + 0x440], ebx
jne 0x51a29c
cmp ecx, 0xb
jne 0x51a32f
mov eax, ecx
or eax, 2
xor ecx, 2
add ecx, eax
je 0x51a32f
mov byte [esp + 0x31c], 0x2f
mov eax, dword [esp + 0x28c]
mov eax, dword [eax]
mov ecx, dword [esp + 0x154]
mov dword [ecx], eax
jmp 0x514aba
xor ecx, ecx
cmp esi, 1
je 0x517d03
mov dword [esp + 0x2a0], ebx
mov dl, byte [esp + 0x31c]
mov esi, dword [esp + 0x154]
mov edi, dword [esp + 0x28c]
mov ebx, dword [esp + 0x45c]
jmp 0x51a2ec
mov dl, 0x36
mov eax, 3
sub eax, ecx
xor eax, ecx
setne al
movzx eax, al
add ecx, eax
mov eax, dword [edi]
mov dword [esi], eax
mov ebx, 1
mov eax, ecx
and eax, 1
xor eax, ecx
cmp eax, 0xffffffff
setne al
movzx eax, al
cmp ecx, eax
jb 0x51a2d0
mov dword [esp + 0x45c], ebx
mov dword [esp + 0x28c], edi
mov dword [esp + 0x154], esi
mov byte [esp + 0x31c], dl
mov eax, dword [esp + 0x2a0]
mov dword [esp + 0x440], eax
jmp 0x514ac5
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
mov ebx, dword [esp + 0x460]
jmp 0x513bcb
mov byte [esp + 0x31c], 0x48
mov eax, dword [esp + 0x28c]
mov eax, dword [eax]
mov ecx, dword [esp + 0x154]
mov dword [ecx], eax
mov dword [esp + 0x45c], 1
mov eax, dword [esp + 0x54]
mov dword [esp + 0x2c4], eax
mov dword [esp + 0x440], ebx
jmp 0x514ac5
mov eax, dword [esp + 0x450]
mov dword [esp + 0x2c8], eax
mov dword [esp + 0x440], ebx
mov eax, dword [esp + 0x44c]
mov dword [esp + 0x2d0], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x154], eax
mov eax, dword [esp + 0x2c4]
mov dword [esp + 0x54], eax
movzx ecx, byte [esp + 0x2db]
cmp ecx, 0x20
je 0x51a45e
mov edx, 0xb
mov esi, 0x10
cmp ecx, 0x55
mov eax, dword [esp + 0x2cc]
mov edi, dword [esp + 0x2d0]
mov ebx, dword [esp + 0x2c8]
je 0x515300
mov dword [esp + 0x2cc], eax
cmp edx, 0xb
jne 0x51a470
mov esi, 0x12
mov byte [esp + 0x2db], 2
mov dword [esp + 4], 4
mov dword [esp], 1
call fcn.00493a50
mov ecx, eax
mov dword [esp + 0x2c4], ecx
mov eax, dword [esp + 0xa4]
mov dword [eax], ecx
mov dword [esp + 0x450], ebx
mov ebx, dword [esp + 0x440]
mov dword [esp + 0x44c], edi
jmp 0x510265
xor edi, edi
mov esi, dword [esp + 0xa4]
mov eax, dword [esp + 0x54]
jmp 0x519f22
mov eax, 0xb
mov byte [esp + 0x2e9], 0x40
mov ecx, dword [esp + 0x88]
cmp dword [ecx], 0
mov dword [esp + 0x450], ebx
mov dword [esp + 0x2c8], ebx
mov dword [esp + 0x44c], edi
mov dword [esp + 0x2d0], edi
mov ebx, dword [esp + 0x440]
mov edx, dword [esp + 0x54]
mov dword [esp + 0x2c4], edx
mov edx, dword [esp + 0x2d4]
mov dword [esp + 0x45c], edx
mov dword [esp + 0x94], ecx
je 0x51a07c