Function at 0x40f620
Capabilities:
Hash data using fnv
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push esi
and esp, 0xfffffff8
sub esp, 0x6a0
mov eax, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
lea ecx, [esp + 0x147]
lea eax, [esp + 0x146]
mov dword [esp], eax
call fcn.00411730
sub esp, 4
lea eax, [esp + 0x157]
mov dword [esp + 0x160], eax
lea eax, [esp + 0x147]
mov dword [esp + 0x15c], eax
lea eax, [esp + 0x26c]
mov dword [esp + 0x274], eax
mov eax, dword [esp + 0x274]
mov dword [esp + 0x2d0], 0x30
mov ecx, dword [esp + 0x2d0]
mov ecx, dword fs:[ecx]
mov dword [esp + 0x2cc], ecx
mov ecx, dword [esp + 0x2cc]
mov ecx, dword [ecx + 0xc]
mov ecx, dword [ecx + 0xc]
mov dword [eax], ecx
mov eax, dword [esp + 0x26c]
mov eax, dword [eax + 0x18]
lea ecx, [esp + 0x260]
mov dword [esp + 0x284], ecx
mov dword [esp + 0x280], eax
mov eax, dword [esp + 0x284]
mov ecx, dword [esp + 0x280]
mov dword [eax], ecx
mov ecx, dword [esp + 0x280]
mov dword [esp + 0x2d4], ecx
mov ecx, dword [esp + 0x2d4]
mov edx, dword [esp + 0x2d4]
mov edx, dword [edx + 0x3c]
mov esi, dword [ecx + edx + 0x78]
mov dword [esp + 0x278], esi
mov ecx, dword [ecx + edx + 0x7c]
mov dword [esp + 0x27c], ecx
mov ecx, dword [esp + 0x280]
add ecx, dword [esp + 0x278]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x27c]
mov dword [eax + 8], ecx
lea eax, [esp + 0x260]
mov dword [esp + 0x288], eax
mov ecx, dword [esp + 0x288]
mov eax, dword [ecx + 4]
cmp eax, dword [ecx]
je 0x40f8db
lea eax, [esp + 0x260]
mov dword [esp + 0x28c], eax
mov eax, dword [esp + 0x28c]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x25c], eax
mov eax, dword [esp + 0x25c]
mov ecx, eax
add ecx, 0xffffffff
mov dword [esp + 0x25c], ecx
cmp eax, 0
je 0x40f8d9
mov eax, dword [esp + 0x25c]
lea ecx, [esp + 0x260]
mov dword [esp + 0x2a4], ecx
mov dword [esp + 0x2a0], eax
mov eax, dword [esp + 0x2a4]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [eax + 0x20]
mov eax, ecx
add eax, edx
mov edx, dword [esp + 0x2a0]
mov eax, dword [eax + edx*4]
add ecx, eax
mov dword [esp + 0x2ac], 0xaf47dad1
mov dword [esp + 0x2a8], 0xea0d6581
mov eax, dword [esp + 0x2ac]
mov dword [esp + 0x29c], ecx
mov dword [esp + 0x298], eax
mov eax, dword [esp + 0x298]
mov dword [esp + 0x294], eax
mov eax, dword [esp + 0x29c]
mov ecx, eax
add ecx, 1
mov dword [esp + 0x29c], ecx
mov al, byte [eax]
mov byte [esp + 0x293], al
cmp byte [esp + 0x293], 0
je 0x40f8ac
mov ecx, dword [esp + 0x294]
mov al, byte [esp + 0x293]
mov dword [esp + 0x2dc], ecx
mov byte [esp + 0x2db], al
mov eax, dword [esp + 0x2dc]
mov dword [esp + 0xa0], eax
movsx eax, byte [esp + 0x2db]
cmp eax, 0x41
jl 0x40f87b
movsx eax, byte [esp + 0x2db]
cmp eax, 0x5a
jg 0x40f87b
movsx eax, byte [esp + 0x2db]
or eax, 0x20
mov dword [esp + 0x9c], eax
jmp 0x40f88a
movsx eax, byte [esp + 0x2db]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0x9c]
xor eax, ecx
imul eax, eax, 0x1000193
mov dword [esp + 0x294], eax
jmp 0x40f7f9
mov eax, dword [esp + 0x294]
mov dword [esp + 0x2b4], 0xaf47dad1
mov dword [esp + 0x2b0], 0xea0d6581
mov ecx, dword [esp + 0x2b0]
cmp eax, ecx
je 0x40f909
jmp 0x40f769
jmp 0x40f8db
lea eax, [esp + 0x26c]
mov dword [esp + 0x2c8], eax
mov eax, dword [esp + 0x2c8]
mov ecx, dword [eax]
mov dword [esp + 0x2e0], ecx
mov ecx, dword [esp + 0x2e0]
mov ecx, dword [ecx]
mov dword [eax], ecx
jmp 0x40f6a8
mov eax, dword [esp + 0x25c]
lea ecx, [esp + 0x260]
mov dword [esp + 0x2c4], ecx
mov dword [esp + 0x2c0], eax
mov eax, dword [esp + 0x2c4]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x1c]
mov dword [esp + 0x2bc], ecx
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x24]
mov dword [esp + 0x2b8], ecx
mov eax, dword [eax]
mov ecx, dword [esp + 0x2bc]
mov edx, dword [esp + 0x2b8]
mov esi, dword [esp + 0x2c0]
movzx edx, word [edx + esi*2]
add eax, dword [ecx + edx*4]
mov dword [esp + 0x270], eax
mov eax, dword [esp + 0x270]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x15c]
mov dword [esp + 0x1b8], eax
mov eax, dword [esp + 0x1b8]
mov dword [esp + 0x1bc], eax
mov eax, dword [esp + 0x1bc]
mov dword [esp + 0x98], eax
mov dword [esp + 0x1f8], eax
mov eax, dword [esp + 0x1f8]
movsx eax, byte [eax + 0xf]
cmp eax, 0
je 0x40fa39
mov eax, dword [esp + 0x98]
mov dword [esp + 0x258], eax
mov dword [esp + 0x254], eax
mov eax, dword [esp + 0x258]
mov dword [esp + 0x90], eax
mov dword [esp + 0x250], 0
cmp dword [esp + 0x250], 0x10
jge 0x40fa37
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x254]
mov edx, dword [esp + 0x250]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc2
xor ecx, 0xca
mov dl, cl
mov ecx, dword [esp + 0x250]
mov byte [eax + ecx], dl
mov eax, dword [esp + 0x250]
add eax, 1
mov dword [esp + 0x250], eax
jmp 0x40f9ec
jmp 0x40fa39
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x98]
mov dword [esp], ecx
call eax
sub esp, 4
cmp dword [ebp + 0xc], 0x10
jb 0x40fa7c
mov dword [esp + 0x140], 0
cmp dword [esp + 0x140], 0x60
jae 0x40fa7a
mov dword [esp + 0x158], 0
jmp 0x411720
jmp 0x40fa7c
lea ecx, [esp + 0x12f]
lea eax, [esp + 0x12e]
mov dword [esp], eax
call fcn.00411790
sub esp, 4
lea eax, [esp + 0x13f]
mov dword [esp + 0x168], eax
lea eax, [esp + 0x12f]
mov dword [esp + 0x164], eax
lea eax, [esp + 0x2f4]
mov dword [esp + 0x2fc], eax
mov eax, dword [esp + 0x2fc]
mov dword [esp + 0x358], 0x30
mov ecx, dword [esp + 0x358]
mov ecx, dword fs:[ecx]
mov dword [esp + 0x354], ecx
mov ecx, dword [esp + 0x354]
mov ecx, dword [ecx + 0xc]
mov ecx, dword [ecx + 0xc]
mov dword [eax], ecx
mov eax, dword [esp + 0x2f4]
mov eax, dword [eax + 0x18]
lea ecx, [esp + 0x2e8]
mov dword [esp + 0x30c], ecx
mov dword [esp + 0x308], eax
mov eax, dword [esp + 0x30c]
mov ecx, dword [esp + 0x308]
mov dword [eax], ecx
mov ecx, dword [esp + 0x308]
mov dword [esp + 0x35c], ecx
mov ecx, dword [esp + 0x35c]
mov edx, dword [esp + 0x35c]
mov edx, dword [edx + 0x3c]
mov esi, dword [ecx + edx + 0x78]
mov dword [esp + 0x300], esi
mov ecx, dword [ecx + edx + 0x7c]
mov dword [esp + 0x304], ecx
mov ecx, dword [esp + 0x308]
add ecx, dword [esp + 0x300]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x304]
mov dword [eax + 8], ecx
lea eax, [esp + 0x2e8]
mov dword [esp + 0x310], eax
mov ecx, dword [esp + 0x310]
mov eax, dword [ecx + 4]
cmp eax, dword [ecx]
je 0x40fd24
lea eax, [esp + 0x2e8]
mov dword [esp + 0x314], eax
mov eax, dword [esp + 0x314]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x2e4], eax
mov eax, dword [esp + 0x2e4]
mov ecx, eax
add ecx, 0xffffffff
mov dword [esp + 0x2e4], ecx
cmp eax, 0
je 0x40fd22
mov eax, dword [esp + 0x2e4]
lea ecx, [esp + 0x2e8]
mov dword [esp + 0x32c], ecx
mov dword [esp + 0x328], eax
mov eax, dword [esp + 0x32c]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [eax + 0x20]
mov eax, ecx
add eax, edx
mov edx, dword [esp + 0x328]
mov eax, dword [eax + edx*4]
add ecx, eax
mov dword [esp + 0x334], 0x63b42f69
mov dword [esp + 0x330], 0xa8e0b649
mov eax, dword [esp + 0x334]
mov dword [esp + 0x324], ecx
mov dword [esp + 0x320], eax
mov eax, dword [esp + 0x320]
mov dword [esp + 0x31c], eax
mov eax, dword [esp + 0x324]
mov ecx, eax
add ecx, 1
mov dword [esp + 0x324], ecx
mov al, byte [eax]
mov byte [esp + 0x31b], al
cmp byte [esp + 0x31b], 0
je 0x40fcf5
mov ecx, dword [esp + 0x31c]
mov al, byte [esp + 0x31b]
mov dword [esp + 0x364], ecx
mov byte [esp + 0x363], al
mov eax, dword [esp + 0x364]
mov dword [esp + 0x8c], eax
movsx eax, byte [esp + 0x363]
cmp eax, 0x41
jl 0x40fcc4
movsx eax, byte [esp + 0x363]
cmp eax, 0x5a
jg 0x40fcc4
movsx eax, byte [esp + 0x363]
or eax, 0x20
mov dword [esp + 0x88], eax
jmp 0x40fcd3
movsx eax, byte [esp + 0x363]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x88]
xor eax, ecx
imul eax, eax, 0x1000193
mov dword [esp + 0x31c], eax
jmp 0x40fc42
mov eax, dword [esp + 0x31c]
mov dword [esp + 0x33c], 0x63b42f69
mov dword [esp + 0x338], 0xa8e0b649
mov ecx, dword [esp + 0x338]
cmp eax, ecx
je 0x40fd52
jmp 0x40fbb2
jmp 0x40fd24
lea eax, [esp + 0x2f4]
mov dword [esp + 0x350], eax
mov eax, dword [esp + 0x350]
mov ecx, dword [eax]
mov dword [esp + 0x368], ecx
mov ecx, dword [esp + 0x368]
mov ecx, dword [ecx]
mov dword [eax], ecx
jmp 0x40faf1
mov eax, dword [esp + 0x2e4]
lea ecx, [esp + 0x2e8]
mov dword [esp + 0x34c], ecx
mov dword [esp + 0x348], eax
mov eax, dword [esp + 0x34c]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x1c]
mov dword [esp + 0x344], ecx
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x24]
mov dword [esp + 0x340], ecx
mov eax, dword [eax]
mov ecx, dword [esp + 0x344]
mov edx, dword [esp + 0x340]
mov esi, dword [esp + 0x348]
movzx edx, word [edx + esi*2]
add eax, dword [ecx + edx*4]
mov dword [esp + 0x2f8], eax
mov eax, dword [esp + 0x2f8]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x164]
mov dword [esp + 0x1b4], eax
mov eax, dword [esp + 0x1b4]
mov dword [esp + 0x1c0], eax
mov eax, dword [esp + 0x1c0]
mov dword [esp + 0x84], eax
mov dword [esp + 0x1f4], eax
mov eax, dword [esp + 0x1f4]
movsx eax, byte [eax + 0xf]
cmp eax, 0
je 0x40fe7c
mov eax, dword [esp + 0x84]
mov dword [esp + 0x24c], eax
mov dword [esp + 0x248], eax
mov eax, dword [esp + 0x24c]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x244], 0
cmp dword [esp + 0x244], 0x10
jge 0x40fe7a
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x248]
mov edx, dword [esp + 0x244]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc2
xor ecx, 0xca
mov dl, cl
mov ecx, dword [esp + 0x244]
mov byte [eax + ecx], dl
mov eax, dword [esp + 0x244]
add eax, 1
mov dword [esp + 0x244], eax
jmp 0x40fe32
jmp 0x40fe7c
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x84]
mov dword [esp], ecx
call eax
sub esp, 4
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.00407ab0
mov dword [esp + 0x128], eax
cmp dword [esp + 0x128], 0
jne 0x40fed5
mov dword [esp + 0x124], 0
cmp dword [esp + 0x124], 0x57
jae 0x40fed3
mov dword [esp + 0x158], 0
jmp 0x411720
jmp 0x40fed5
mov dword [esp + 0x120], 0
lea ecx, [esp + 0x10f]
lea eax, [esp + 0x10e]
mov dword [esp], eax
call fcn.004117f0
sub esp, 4
lea eax, [esp + 0x11f]
mov dword [esp + 0x170], eax
lea eax, [esp + 0x10f]
mov dword [esp + 0x16c], eax
lea eax, [esp + 0x37c]
mov dword [esp + 0x384], eax
mov eax, dword [esp + 0x384]
mov dword [esp + 0x3e0], 0x30
mov ecx, dword [esp + 0x3e0]
mov ecx, dword fs:[ecx]
mov dword [esp + 0x3dc], ecx
mov ecx, dword [esp + 0x3dc]
mov ecx, dword [ecx + 0xc]
mov ecx, dword [ecx + 0xc]
mov dword [eax], ecx
mov eax, dword [esp + 0x37c]
mov eax, dword [eax + 0x18]
lea ecx, [esp + 0x370]
mov dword [esp + 0x394], ecx
mov dword [esp + 0x390], eax
mov eax, dword [esp + 0x394]
mov ecx, dword [esp + 0x390]
mov dword [eax], ecx
mov ecx, dword [esp + 0x390]
mov dword [esp + 0x3e4], ecx
mov ecx, dword [esp + 0x3e4]
mov edx, dword [esp + 0x3e4]
mov edx, dword [edx + 0x3c]
mov esi, dword [ecx + edx + 0x78]
mov dword [esp + 0x388], esi
mov ecx, dword [ecx + edx + 0x7c]
mov dword [esp + 0x38c], ecx
mov ecx, dword [esp + 0x390]
add ecx, dword [esp + 0x388]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x38c]
mov dword [eax + 8], ecx
lea eax, [esp + 0x370]
mov dword [esp + 0x398], eax
mov ecx, dword [esp + 0x398]
mov eax, dword [ecx + 4]
cmp eax, dword [ecx]
je 0x410175
lea eax, [esp + 0x370]
mov dword [esp + 0x39c], eax
mov eax, dword [esp + 0x39c]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x36c], eax
mov eax, dword [esp + 0x36c]
mov ecx, eax
add ecx, 0xffffffff
mov dword [esp + 0x36c], ecx
cmp eax, 0
je 0x410173
mov eax, dword [esp + 0x36c]
lea ecx, [esp + 0x370]
mov dword [esp + 0x3b4], ecx
mov dword [esp + 0x3b0], eax
mov eax, dword [esp + 0x3b4]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [eax + 0x20]
mov eax, ecx
add eax, edx
mov edx, dword [esp + 0x3b0]
mov eax, dword [eax + edx*4]
add ecx, eax
mov dword [esp + 0x3bc], 0x5004099e
mov dword [esp + 0x3b8], 0xd2cc7d22
mov eax, dword [esp + 0x3bc]
mov dword [esp + 0x3ac], ecx
mov dword [esp + 0x3a8], eax
mov eax, dword [esp + 0x3a8]
mov dword [esp + 0x3a4], eax
mov eax, dword [esp + 0x3ac]
mov ecx, eax
add ecx, 1
mov dword [esp + 0x3ac], ecx
mov al, byte [eax]
mov byte [esp + 0x3a3], al
cmp byte [esp + 0x3a3], 0
je 0x410146
mov ecx, dword [esp + 0x3a4]
mov al, byte [esp + 0x3a3]
mov dword [esp + 0x3ec], ecx
mov byte [esp + 0x3eb], al
mov eax, dword [esp + 0x3ec]
mov dword [esp + 0x78], eax
movsx eax, byte [esp + 0x3eb]
cmp eax, 0x41
jl 0x41011e
movsx eax, byte [esp + 0x3eb]
cmp eax, 0x5a
jg 0x41011e
movsx eax, byte [esp + 0x3eb]
or eax, 0x20
mov dword [esp + 0x74], eax
jmp 0x41012a
movsx eax, byte [esp + 0x3eb]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
xor eax, ecx
imul eax, eax, 0x1000193
mov dword [esp + 0x3a4], eax
jmp 0x4100a6
mov eax, dword [esp + 0x3a4]
mov dword [esp + 0x3c4], 0x5004099e
mov dword [esp + 0x3c0], 0xd2cc7d22
mov ecx, dword [esp + 0x3c0]
cmp eax, ecx
je 0x4101a3
jmp 0x410016
jmp 0x410175
lea eax, [esp + 0x37c]
mov dword [esp + 0x3d8], eax
mov eax, dword [esp + 0x3d8]
mov ecx, dword [eax]
mov dword [esp + 0x3f0], ecx
mov ecx, dword [esp + 0x3f0]
mov ecx, dword [ecx]
mov dword [eax], ecx
jmp 0x40ff55
mov eax, dword [esp + 0x36c]
lea ecx, [esp + 0x370]
mov dword [esp + 0x3d4], ecx
mov dword [esp + 0x3d0], eax
mov eax, dword [esp + 0x3d4]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x1c]
mov dword [esp + 0x3cc], ecx
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x24]
mov dword [esp + 0x3c8], ecx
mov eax, dword [eax]
mov ecx, dword [esp + 0x3cc]
mov edx, dword [esp + 0x3c8]
mov esi, dword [esp + 0x3d0]
movzx edx, word [edx + esi*2]
add eax, dword [ecx + edx*4]
mov dword [esp + 0x380], eax
mov eax, dword [esp + 0x380]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x16c]
mov dword [esp + 0x1b0], eax
mov eax, dword [esp + 0x1b0]
mov dword [esp + 0x1c4], eax
mov eax, dword [esp + 0x1c4]
mov dword [esp + 0x70], eax
mov dword [esp + 0x1f0], eax
mov eax, dword [esp + 0x1f0]
movsx eax, byte [eax + 0xf]
cmp eax, 0
je 0x4102c4
mov eax, dword [esp + 0x70]
mov dword [esp + 0x240], eax
mov dword [esp + 0x23c], eax
mov eax, dword [esp + 0x240]
mov dword [esp + 0x68], eax
mov dword [esp + 0x238], 0
cmp dword [esp + 0x238], 0x10
jge 0x4102c2
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x23c]
mov edx, dword [esp + 0x238]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc2
xor ecx, 0xca
mov dl, cl
mov ecx, dword [esp + 0x238]
mov byte [eax + ecx], dl
mov eax, dword [esp + 0x238]
add eax, 1
mov dword [esp + 0x238], eax
jmp 0x41027a
jmp 0x4102c4
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x70]
mov dword [esp], ecx
call eax
sub esp, 4
mov eax, dword [esp + 0x128]
mov dword [esp + 0x108], eax
lea ecx, [esp + 0xf7]
lea eax, [esp + 0xf6]
mov dword [esp], eax
call fcn.00411850
sub esp, 4
lea eax, [esp + 0x107]
mov dword [esp + 0x178], eax
lea eax, [esp + 0xf7]
mov dword [esp + 0x174], eax
lea eax, [esp + 0x404]
mov dword [esp + 0x40c], eax
mov eax, dword [esp + 0x40c]
mov dword [esp + 0x468], 0x30
mov ecx, dword [esp + 0x468]
mov ecx, dword fs:[ecx]
mov dword [esp + 0x464], ecx
mov ecx, dword [esp + 0x464]
mov ecx, dword [ecx + 0xc]
mov ecx, dword [ecx + 0xc]
mov dword [eax], ecx
mov eax, dword [esp + 0x404]
mov eax, dword [eax + 0x18]
lea ecx, [esp + 0x3f8]
mov dword [esp + 0x41c], ecx
mov dword [esp + 0x418], eax
mov eax, dword [esp + 0x41c]
mov ecx, dword [esp + 0x418]
mov dword [eax], ecx
mov ecx, dword [esp + 0x418]
mov dword [esp + 0x46c], ecx
mov ecx, dword [esp + 0x46c]
mov edx, dword [esp + 0x46c]
mov edx, dword [edx + 0x3c]
mov esi, dword [ecx + edx + 0x78]
mov dword [esp + 0x410], esi
mov ecx, dword [ecx + edx + 0x7c]
mov dword [esp + 0x414], ecx
mov ecx, dword [esp + 0x418]
add ecx, dword [esp + 0x410]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x414]
mov dword [eax + 8], ecx
lea eax, [esp + 0x3f8]
mov dword [esp + 0x420], eax
mov ecx, dword [esp + 0x420]
mov eax, dword [ecx + 4]
cmp eax, dword [ecx]
je 0x410577
lea eax, [esp + 0x3f8]
mov dword [esp + 0x424], eax
mov eax, dword [esp + 0x424]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x3f4], eax
mov eax, dword [esp + 0x3f4]
mov ecx, eax
add ecx, 0xffffffff
mov dword [esp + 0x3f4], ecx
cmp eax, 0
je 0x410575
mov eax, dword [esp + 0x3f4]
lea ecx, [esp + 0x3f8]
mov dword [esp + 0x43c], ecx
mov dword [esp + 0x438], eax
mov eax, dword [esp + 0x43c]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [eax + 0x20]
mov eax, ecx
add eax, edx
mov edx, dword [esp + 0x438]
mov eax, dword [eax + edx*4]
add ecx, eax
mov dword [esp + 0x444], 0x12d4ee8f
mov dword [esp + 0x440], 0xb0e40bdb
mov eax, dword [esp + 0x444]
mov dword [esp + 0x434], ecx
mov dword [esp + 0x430], eax
mov eax, dword [esp + 0x430]
mov dword [esp + 0x42c], eax
mov eax, dword [esp + 0x434]
mov ecx, eax
add ecx, 1
mov dword [esp + 0x434], ecx
mov al, byte [eax]
mov byte [esp + 0x42b], al
cmp byte [esp + 0x42b], 0
je 0x410548
mov ecx, dword [esp + 0x42c]
mov al, byte [esp + 0x42b]
mov dword [esp + 0x474], ecx
mov byte [esp + 0x473], al
mov eax, dword [esp + 0x474]
mov dword [esp + 0x64], eax
movsx eax, byte [esp + 0x473]
cmp eax, 0x41
jl 0x410520
movsx eax, byte [esp + 0x473]
cmp eax, 0x5a
jg 0x410520
movsx eax, byte [esp + 0x473]
or eax, 0x20
mov dword [esp + 0x60], eax
jmp 0x41052c
movsx eax, byte [esp + 0x473]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
xor eax, ecx
imul eax, eax, 0x1000193
mov dword [esp + 0x42c], eax
jmp 0x4104a8
mov eax, dword [esp + 0x42c]
mov dword [esp + 0x44c], 0x12d4ee8f
mov dword [esp + 0x448], 0xb0e40bdb
mov ecx, dword [esp + 0x448]
cmp eax, ecx
je 0x4105a5
jmp 0x410418
jmp 0x410577
lea eax, [esp + 0x404]
mov dword [esp + 0x460], eax
mov eax, dword [esp + 0x460]
mov ecx, dword [eax]
mov dword [esp + 0x478], ecx
mov ecx, dword [esp + 0x478]
mov ecx, dword [ecx]
mov dword [eax], ecx
jmp 0x410357
mov eax, dword [esp + 0x3f4]
lea ecx, [esp + 0x3f8]
mov dword [esp + 0x45c], ecx
mov dword [esp + 0x458], eax
mov eax, dword [esp + 0x45c]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x1c]
mov dword [esp + 0x454], ecx
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x24]
mov dword [esp + 0x450], ecx
mov eax, dword [eax]
mov ecx, dword [esp + 0x454]
mov edx, dword [esp + 0x450]
mov esi, dword [esp + 0x458]
movzx edx, word [edx + esi*2]
add eax, dword [ecx + edx*4]
mov dword [esp + 0x408], eax
mov eax, dword [esp + 0x408]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x174]
mov dword [esp + 0x1ac], eax
mov eax, dword [esp + 0x1ac]
mov dword [esp + 0x1c8], eax
mov eax, dword [esp + 0x1c8]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x1ec], eax
mov eax, dword [esp + 0x1ec]
movsx eax, byte [eax + 0xf]
cmp eax, 0
je 0x4106c6
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x234], eax
mov dword [esp + 0x230], eax
mov eax, dword [esp + 0x234]
mov dword [esp + 0x54], eax
mov dword [esp + 0x22c], 0
cmp dword [esp + 0x22c], 0x10
jge 0x4106c4
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x230]
mov edx, dword [esp + 0x22c]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc2
xor ecx, 0xca
mov dl, cl
mov ecx, dword [esp + 0x22c]
mov byte [eax + ecx], dl
mov eax, dword [esp + 0x22c]
add eax, 1
mov dword [esp + 0x22c], eax
jmp 0x41067c
jmp 0x4106c6
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
mov dword [esp], ecx
call eax
sub esp, 4
mov eax, dword [esp + 0x108]
add eax, 0x18
add eax, 0x60
mov ecx, dword [ebp + 0xc]
shl ecx, 3
add eax, ecx
mov dword [esp + 0x120], eax
lea ecx, [esp + 0xe5]
lea eax, [esp + 0xe4]
mov dword [esp], eax
call fcn.004118b0
sub esp, 4
lea eax, [esp + 0xf5]
mov dword [esp + 0x180], eax
lea eax, [esp + 0xe5]
mov dword [esp + 0x17c], eax
lea eax, [esp + 0x48c]
mov dword [esp + 0x494], eax
mov eax, dword [esp + 0x494]
mov dword [esp + 0x4f0], 0x30
mov ecx, dword [esp + 0x4f0]
mov ecx, dword fs:[ecx]
mov dword [esp + 0x4ec], ecx
mov ecx, dword [esp + 0x4ec]
mov ecx, dword [ecx + 0xc]
mov ecx, dword [ecx + 0xc]
mov dword [eax], ecx
mov eax, dword [esp + 0x48c]
mov eax, dword [eax + 0x18]
lea ecx, [esp + 0x480]
mov dword [esp + 0x4a4], ecx
mov dword [esp + 0x4a0], eax
mov eax, dword [esp + 0x4a4]
mov ecx, dword [esp + 0x4a0]
mov dword [eax], ecx
mov ecx, dword [esp + 0x4a0]
mov dword [esp + 0x4f4], ecx
mov ecx, dword [esp + 0x4f4]
mov edx, dword [esp + 0x4f4]
mov edx, dword [edx + 0x3c]
mov esi, dword [ecx + edx + 0x78]
mov dword [esp + 0x498], esi
mov ecx, dword [ecx + edx + 0x7c]
mov dword [esp + 0x49c], ecx
mov ecx, dword [esp + 0x4a0]
add ecx, dword [esp + 0x498]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x49c]
mov dword [eax + 8], ecx
lea eax, [esp + 0x480]
mov dword [esp + 0x4a8], eax
mov ecx, dword [esp + 0x4a8]
mov eax, dword [ecx + 4]
cmp eax, dword [ecx]
je 0x410987
lea eax, [esp + 0x480]
mov dword [esp + 0x4ac], eax
mov eax, dword [esp + 0x4ac]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x47c], eax
mov eax, dword [esp + 0x47c]
mov ecx, eax
add ecx, 0xffffffff
mov dword [esp + 0x47c], ecx
cmp eax, 0
je 0x410985
mov eax, dword [esp + 0x47c]
lea ecx, [esp + 0x480]
mov dword [esp + 0x4c4], ecx
mov dword [esp + 0x4c0], eax
mov eax, dword [esp + 0x4c4]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [eax + 0x20]
mov eax, ecx
add eax, edx
mov edx, dword [esp + 0x4c0]
mov eax, dword [eax + edx*4]
add ecx, eax
mov dword [esp + 0x4cc], 0xced9bdcc
mov dword [esp + 0x4c8], 0x3db69484
mov eax, dword [esp + 0x4cc]
mov dword [esp + 0x4bc], ecx
mov dword [esp + 0x4b8], eax
mov eax, dword [esp + 0x4b8]
mov dword [esp + 0x4b4], eax
mov eax, dword [esp + 0x4bc]
mov ecx, eax
add ecx, 1
mov dword [esp + 0x4bc], ecx
mov al, byte [eax]
mov byte [esp + 0x4b3], al
cmp byte [esp + 0x4b3], 0
je 0x410958
mov ecx, dword [esp + 0x4b4]
mov al, byte [esp + 0x4b3]
mov dword [esp + 0x4fc], ecx
mov byte [esp + 0x4fb], al
mov eax, dword [esp + 0x4fc]
mov dword [esp + 0x50], eax
movsx eax, byte [esp + 0x4fb]
cmp eax, 0x41
jl 0x410930
movsx eax, byte [esp + 0x4fb]
cmp eax, 0x5a
jg 0x410930
movsx eax, byte [esp + 0x4fb]
or eax, 0x20
mov dword [esp + 0x4c], eax
jmp 0x41093c
movsx eax, byte [esp + 0x4fb]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
xor eax, ecx
imul eax, eax, 0x1000193
mov dword [esp + 0x4b4], eax
jmp 0x4108b8
mov eax, dword [esp + 0x4b4]
mov dword [esp + 0x4d4], 0xced9bdcc
mov dword [esp + 0x4d0], 0x3db69484
mov ecx, dword [esp + 0x4d0]
cmp eax, ecx
je 0x4109b5
jmp 0x410828
jmp 0x410987
lea eax, [esp + 0x48c]
mov dword [esp + 0x4e8], eax
mov eax, dword [esp + 0x4e8]
mov ecx, dword [eax]
mov dword [esp + 0x500], ecx
mov ecx, dword [esp + 0x500]
mov ecx, dword [ecx]
mov dword [eax], ecx
jmp 0x410767
mov eax, dword [esp + 0x47c]
lea ecx, [esp + 0x480]
mov dword [esp + 0x4e4], ecx
mov dword [esp + 0x4e0], eax
mov eax, dword [esp + 0x4e4]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x1c]
mov dword [esp + 0x4dc], ecx
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x24]
mov dword [esp + 0x4d8], ecx
mov eax, dword [eax]
mov ecx, dword [esp + 0x4dc]
mov edx, dword [esp + 0x4d8]
mov esi, dword [esp + 0x4e0]
movzx edx, word [edx + esi*2]
add eax, dword [ecx + edx*4]
mov dword [esp + 0x490], eax
mov eax, dword [esp + 0x490]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x17c]
mov dword [esp + 0x1a8], eax
mov eax, dword [esp + 0x1a8]
mov dword [esp + 0x1cc], eax
mov eax, dword [esp + 0x1cc]
mov dword [esp + 0x48], eax
mov dword [esp + 0x1e8], eax
mov eax, dword [esp + 0x1e8]
movsx eax, byte [eax + 0xf]
cmp eax, 0
je 0x410ad6
mov eax, dword [esp + 0x48]
mov dword [esp + 0x228], eax
mov dword [esp + 0x224], eax
mov eax, dword [esp + 0x228]
mov dword [esp + 0x40], eax
mov dword [esp + 0x220], 0
cmp dword [esp + 0x220], 0x10
jge 0x410ad4
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x224]
mov edx, dword [esp + 0x220]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc2
xor ecx, 0xca
mov dl, cl
mov ecx, dword [esp + 0x220]
mov byte [eax + ecx], dl
mov eax, dword [esp + 0x220]
add eax, 1
mov dword [esp + 0x220], eax
jmp 0x410a8c
jmp 0x410ad6
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
mov dword [esp], ecx
call eax
sub esp, 4
lea ecx, [esp + 0xd3]
lea eax, [esp + 0xd2]
mov dword [esp], eax
call fcn.00411910
sub esp, 4
lea eax, [esp + 0xe3]
mov dword [esp + 0x188], eax
lea eax, [esp + 0xd3]
mov dword [esp + 0x184], eax
lea eax, [esp + 0x514]
mov dword [esp + 0x51c], eax
mov eax, dword [esp + 0x51c]
mov dword [esp + 0x578], 0x30
mov ecx, dword [esp + 0x578]
mov ecx, dword fs:[ecx]
mov dword [esp + 0x574], ecx
mov ecx, dword [esp + 0x574]
mov ecx, dword [ecx + 0xc]
mov ecx, dword [ecx + 0xc]
mov dword [eax], ecx
mov eax, dword [esp + 0x514]
mov eax, dword [eax + 0x18]
lea ecx, [esp + 0x508]
mov dword [esp + 0x52c], ecx
mov dword [esp + 0x528], eax
mov eax, dword [esp + 0x52c]
mov ecx, dword [esp + 0x528]
mov dword [eax], ecx
mov ecx, dword [esp + 0x528]
mov dword [esp + 0x57c], ecx
mov ecx, dword [esp + 0x57c]
mov edx, dword [esp + 0x57c]
mov edx, dword [edx + 0x3c]
mov esi, dword [ecx + edx + 0x78]
mov dword [esp + 0x520], esi
mov ecx, dword [ecx + edx + 0x7c]
mov dword [esp + 0x524], ecx
mov ecx, dword [esp + 0x528]
add ecx, dword [esp + 0x520]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x524]
mov dword [eax + 8], ecx
lea eax, [esp + 0x508]
mov dword [esp + 0x530], eax
mov ecx, dword [esp + 0x530]
mov eax, dword [ecx + 4]
cmp eax, dword [ecx]
je 0x410d7b
lea eax, [esp + 0x508]
mov dword [esp + 0x534], eax
mov eax, dword [esp + 0x534]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x504], eax
mov eax, dword [esp + 0x504]
mov ecx, eax
add ecx, 0xffffffff
mov dword [esp + 0x504], ecx
cmp eax, 0
je 0x410d79
mov eax, dword [esp + 0x504]
lea ecx, [esp + 0x508]
mov dword [esp + 0x54c], ecx
mov dword [esp + 0x548], eax
mov eax, dword [esp + 0x54c]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [eax + 0x20]
mov eax, ecx
add eax, edx
mov edx, dword [esp + 0x548]
mov eax, dword [eax + edx*4]
add ecx, eax
mov dword [esp + 0x554], 0xa9dc4e2d
mov dword [esp + 0x550], 0xa62d39bd
mov eax, dword [esp + 0x554]
mov dword [esp + 0x544], ecx
mov dword [esp + 0x540], eax
mov eax, dword [esp + 0x540]
mov dword [esp + 0x53c], eax
mov eax, dword [esp + 0x544]
mov ecx, eax
add ecx, 1
mov dword [esp + 0x544], ecx
mov al, byte [eax]
mov byte [esp + 0x53b], al
cmp byte [esp + 0x53b], 0
je 0x410d4c
mov ecx, dword [esp + 0x53c]
mov al, byte [esp + 0x53b]
mov dword [esp + 0x584], ecx
mov byte [esp + 0x583], al
mov eax, dword [esp + 0x584]
mov dword [esp + 0x3c], eax
movsx eax, byte [esp + 0x583]
cmp eax, 0x41
jl 0x410d24
movsx eax, byte [esp + 0x583]
cmp eax, 0x5a
jg 0x410d24
movsx eax, byte [esp + 0x583]
or eax, 0x20
mov dword [esp + 0x38], eax
jmp 0x410d30
movsx eax, byte [esp + 0x583]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
xor eax, ecx
imul eax, eax, 0x1000193
mov dword [esp + 0x53c], eax
jmp 0x410cac
mov eax, dword [esp + 0x53c]
mov dword [esp + 0x55c], 0xa9dc4e2d
mov dword [esp + 0x558], 0xa62d39bd
mov ecx, dword [esp + 0x558]
cmp eax, ecx
je 0x410da9
jmp 0x410c1c
jmp 0x410d7b
lea eax, [esp + 0x514]
mov dword [esp + 0x570], eax
mov eax, dword [esp + 0x570]
mov ecx, dword [eax]
mov dword [esp + 0x588], ecx
mov ecx, dword [esp + 0x588]
mov ecx, dword [ecx]
mov dword [eax], ecx
jmp 0x410b5b
mov eax, dword [esp + 0x504]
lea ecx, [esp + 0x508]
mov dword [esp + 0x56c], ecx
mov dword [esp + 0x568], eax
mov eax, dword [esp + 0x56c]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x1c]
mov dword [esp + 0x564], ecx
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x24]
mov dword [esp + 0x560], ecx
mov eax, dword [eax]
mov ecx, dword [esp + 0x564]
mov edx, dword [esp + 0x560]
mov esi, dword [esp + 0x568]
movzx edx, word [edx + esi*2]
add eax, dword [ecx + edx*4]
mov dword [esp + 0x518], eax
mov eax, dword [esp + 0x518]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x184]
mov dword [esp + 0x1a4], eax
mov eax, dword [esp + 0x1a4]
mov dword [esp + 0x1d0], eax
mov eax, dword [esp + 0x1d0]
mov dword [esp + 0x34], eax
mov dword [esp + 0x1e4], eax
mov eax, dword [esp + 0x1e4]
movsx eax, byte [eax + 0xf]
cmp eax, 0
je 0x410eca
mov eax, dword [esp + 0x34]
mov dword [esp + 0x21c], eax
mov dword [esp + 0x218], eax
mov eax, dword [esp + 0x21c]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x214], 0
cmp dword [esp + 0x214], 0x10
jge 0x410ec8
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x218]
mov edx, dword [esp + 0x214]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc2
xor ecx, 0xca
mov dl, cl
mov ecx, dword [esp + 0x214]
mov byte [eax + ecx], dl
mov eax, dword [esp + 0x214]
add eax, 1
mov dword [esp + 0x214], eax
jmp 0x410e80
jmp 0x410eca
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov dword [esp], ecx
call eax
sub esp, 4
mov eax, dword [esp + 0x120]
cmp dword [eax], 0
jne 0x411305
lea ecx, [esp + 0xc1]
lea eax, [esp + 0xc0]
mov dword [esp], eax
call fcn.00411970
sub esp, 4
lea eax, [esp + 0xd1]
mov dword [esp + 0x190], eax
lea eax, [esp + 0xc1]
mov dword [esp + 0x18c], eax
lea eax, [esp + 0x59c]
mov dword [esp + 0x5a4], eax
mov eax, dword [esp + 0x5a4]
mov dword [esp + 0x600], 0x30
mov ecx, dword [esp + 0x600]
mov ecx, dword fs:[ecx]
mov dword [esp + 0x5fc], ecx
mov ecx, dword [esp + 0x5fc]
mov ecx, dword [ecx + 0xc]
mov ecx, dword [ecx + 0xc]
mov dword [eax], ecx
mov eax, dword [esp + 0x59c]
mov eax, dword [eax + 0x18]
lea ecx, [esp + 0x590]
mov dword [esp + 0x5b4], ecx
mov dword [esp + 0x5b0], eax
mov eax, dword [esp + 0x5b4]
mov ecx, dword [esp + 0x5b0]
mov dword [eax], ecx
mov ecx, dword [esp + 0x5b0]
mov dword [esp + 0x604], ecx
mov ecx, dword [esp + 0x604]
mov edx, dword [esp + 0x604]
mov edx, dword [edx + 0x3c]
mov esi, dword [ecx + edx + 0x78]
mov dword [esp + 0x5a8], esi
mov ecx, dword [ecx + edx + 0x7c]
mov dword [esp + 0x5ac], ecx
mov ecx, dword [esp + 0x5b0]
add ecx, dword [esp + 0x5a8]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x5ac]
mov dword [eax + 8], ecx
lea eax, [esp + 0x590]
mov dword [esp + 0x5b8], eax
mov ecx, dword [esp + 0x5b8]
mov eax, dword [ecx + 4]
cmp eax, dword [ecx]
je 0x41117f
lea eax, [esp + 0x590]
mov dword [esp + 0x5bc], eax
mov eax, dword [esp + 0x5bc]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x58c], eax
mov eax, dword [esp + 0x58c]
mov ecx, eax
add ecx, 0xffffffff
mov dword [esp + 0x58c], ecx
cmp eax, 0
je 0x41117d
mov eax, dword [esp + 0x58c]
lea ecx, [esp + 0x590]
mov dword [esp + 0x5d4], ecx
mov dword [esp + 0x5d0], eax
mov eax, dword [esp + 0x5d4]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [eax + 0x20]
mov eax, ecx
add eax, edx
mov edx, dword [esp + 0x5d0]
mov eax, dword [eax + edx*4]
add ecx, eax
mov dword [esp + 0x5dc], 0x3b3bf928
mov dword [esp + 0x5d8], 0xdb0def40
mov eax, dword [esp + 0x5dc]
mov dword [esp + 0x5cc], ecx
mov dword [esp + 0x5c8], eax
mov eax, dword [esp + 0x5c8]
mov dword [esp + 0x5c4], eax
mov eax, dword [esp + 0x5cc]
mov ecx, eax
add ecx, 1
mov dword [esp + 0x5cc], ecx
mov al, byte [eax]
mov byte [esp + 0x5c3], al
cmp byte [esp + 0x5c3], 0
je 0x411150
mov ecx, dword [esp + 0x5c4]
mov al, byte [esp + 0x5c3]
mov dword [esp + 0x60c], ecx
mov byte [esp + 0x60b], al
mov eax, dword [esp + 0x60c]
mov dword [esp + 0x28], eax
movsx eax, byte [esp + 0x60b]
cmp eax, 0x41
jl 0x411128
movsx eax, byte [esp + 0x60b]
cmp eax, 0x5a
jg 0x411128
movsx eax, byte [esp + 0x60b]
or eax, 0x20
mov dword [esp + 0x24], eax
jmp 0x411134
movsx eax, byte [esp + 0x60b]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
xor eax, ecx
imul eax, eax, 0x1000193
mov dword [esp + 0x5c4], eax
jmp 0x4110b0
mov eax, dword [esp + 0x5c4]
mov dword [esp + 0x5e4], 0x3b3bf928
mov dword [esp + 0x5e0], 0xdb0def40
mov ecx, dword [esp + 0x5e0]
cmp eax, ecx
je 0x4111ad
jmp 0x411020
jmp 0x41117f
lea eax, [esp + 0x59c]
mov dword [esp + 0x5f8], eax
mov eax, dword [esp + 0x5f8]
mov ecx, dword [eax]
mov dword [esp + 0x610], ecx
mov ecx, dword [esp + 0x610]
mov ecx, dword [ecx]
mov dword [eax], ecx
jmp 0x410f5f
mov eax, dword [esp + 0x58c]
lea ecx, [esp + 0x590]
mov dword [esp + 0x5f4], ecx
mov dword [esp + 0x5f0], eax
mov eax, dword [esp + 0x5f4]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x1c]
mov dword [esp + 0x5ec], ecx
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x24]
mov dword [esp + 0x5e8], ecx
mov eax, dword [eax]
mov ecx, dword [esp + 0x5ec]
mov edx, dword [esp + 0x5e8]
mov esi, dword [esp + 0x5f0]
movzx edx, word [edx + esi*2]
add eax, dword [ecx + edx*4]
mov dword [esp + 0x5a0], eax
mov eax, dword [esp + 0x5a0]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18c]
mov dword [esp + 0x1a0], eax
mov eax, dword [esp + 0x1a0]
mov dword [esp + 0x1d4], eax
mov eax, dword [esp + 0x1d4]
mov dword [esp + 0x20], eax
mov dword [esp + 0x1e0], eax
mov eax, dword [esp + 0x1e0]
movsx eax, byte [eax + 0xf]
cmp eax, 0
je 0x4112ce
mov eax, dword [esp + 0x20]
mov dword [esp + 0x210], eax
mov dword [esp + 0x20c], eax
mov eax, dword [esp + 0x210]
mov dword [esp + 0x18], eax
mov dword [esp + 0x208], 0
cmp dword [esp + 0x208], 0x10
jge 0x4112cc
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20c]
mov edx, dword [esp + 0x208]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc2
xor ecx, 0xca
mov dl, cl
mov ecx, dword [esp + 0x208]
mov byte [eax + ecx], dl
mov eax, dword [esp + 0x208]
add eax, 1
mov dword [esp + 0x208], eax
jmp 0x411284
jmp 0x4112ce
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
call eax
sub esp, 4
mov dword [esp + 0xbc], 0
cmp dword [esp + 0xbc], 0x52
jae 0x411303
mov dword [esp + 0x158], 0
jmp 0x411720
jmp 0x411305
lea ecx, [esp + 0xab]
lea eax, [esp + 0xaa]
mov dword [esp], eax
call fcn.004119d0
sub esp, 4
lea eax, [esp + 0xbb]
mov dword [esp + 0x198], eax
lea eax, [esp + 0xab]
mov dword [esp + 0x194], eax
lea eax, [esp + 0x624]
mov dword [esp + 0x62c], eax
mov eax, dword [esp + 0x62c]
mov dword [esp + 0x688], 0x30
mov ecx, dword [esp + 0x688]
mov ecx, dword fs:[ecx]
mov dword [esp + 0x684], ecx
mov ecx, dword [esp + 0x684]
mov ecx, dword [ecx + 0xc]
mov ecx, dword [ecx + 0xc]
mov dword [eax], ecx
mov eax, dword [esp + 0x624]
mov eax, dword [eax + 0x18]
lea ecx, [esp + 0x618]
mov dword [esp + 0x63c], ecx
mov dword [esp + 0x638], eax
mov eax, dword [esp + 0x63c]
mov ecx, dword [esp + 0x638]
mov dword [eax], ecx
mov ecx, dword [esp + 0x638]
mov dword [esp + 0x68c], ecx
mov ecx, dword [esp + 0x68c]
mov edx, dword [esp + 0x68c]
mov edx, dword [edx + 0x3c]
mov esi, dword [ecx + edx + 0x78]
mov dword [esp + 0x630], esi
mov ecx, dword [ecx + edx + 0x7c]
mov dword [esp + 0x634], ecx
mov ecx, dword [esp + 0x638]
add ecx, dword [esp + 0x630]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x634]
mov dword [eax + 8], ecx
lea eax, [esp + 0x618]
mov dword [esp + 0x640], eax
mov ecx, dword [esp + 0x640]
mov eax, dword [ecx + 4]
cmp eax, dword [ecx]
je 0x41159a
lea eax, [esp + 0x618]
mov dword [esp + 0x644], eax
mov eax, dword [esp + 0x644]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x614], eax
mov eax, dword [esp + 0x614]
mov ecx, eax
add ecx, 0xffffffff
mov dword [esp + 0x614], ecx
cmp eax, 0
je 0x411598
mov eax, dword [esp + 0x614]
lea ecx, [esp + 0x618]
mov dword [esp + 0x65c], ecx
mov dword [esp + 0x658], eax
mov eax, dword [esp + 0x65c]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [eax + 0x20]
mov eax, ecx
add eax, edx
mov edx, dword [esp + 0x658]
mov eax, dword [eax + edx*4]
add ecx, eax
mov dword [esp + 0x664], 0xa721168b
mov dword [esp + 0x660], 0x7e2db837
mov eax, dword [esp + 0x664]
mov dword [esp + 0x654], ecx
mov dword [esp + 0x650], eax
mov eax, dword [esp + 0x650]
mov dword [esp + 0x64c], eax
mov eax, dword [esp + 0x654]
mov ecx, eax
add ecx, 1
mov dword [esp + 0x654], ecx
mov al, byte [eax]
mov byte [esp + 0x64b], al
cmp byte [esp + 0x64b], 0
je 0x41156b
mov ecx, dword [esp + 0x64c]
mov al, byte [esp + 0x64b]
mov dword [esp + 0x694], ecx
mov byte [esp + 0x693], al
mov eax, dword [esp + 0x694]
mov dword [esp + 0x14], eax
movsx eax, byte [esp + 0x693]
cmp eax, 0x41
jl 0x411543
movsx eax, byte [esp + 0x693]
cmp eax, 0x5a
jg 0x411543
movsx eax, byte [esp + 0x693]
or eax, 0x20
mov dword [esp + 0x10], eax
jmp 0x41154f
movsx eax, byte [esp + 0x693]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
xor eax, ecx
imul eax, eax, 0x1000193
mov dword [esp + 0x64c], eax
jmp 0x4114cb
mov eax, dword [esp + 0x64c]
mov dword [esp + 0x66c], 0xa721168b
mov dword [esp + 0x668], 0x7e2db837
mov ecx, dword [esp + 0x668]
cmp eax, ecx
je 0x4115c8
jmp 0x41143b
jmp 0x41159a
lea eax, [esp + 0x624]
mov dword [esp + 0x680], eax
mov eax, dword [esp + 0x680]
mov ecx, dword [eax]
mov dword [esp + 0x698], ecx
mov ecx, dword [esp + 0x698]
mov ecx, dword [ecx]
mov dword [eax], ecx
jmp 0x41137a
mov eax, dword [esp + 0x614]
lea ecx, [esp + 0x618]
mov dword [esp + 0x67c], ecx
mov dword [esp + 0x678], eax
mov eax, dword [esp + 0x67c]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x1c]
mov dword [esp + 0x674], ecx
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add ecx, dword [edx + 0x24]
mov dword [esp + 0x670], ecx
mov eax, dword [eax]
mov ecx, dword [esp + 0x674]
mov edx, dword [esp + 0x670]
mov esi, dword [esp + 0x678]
movzx edx, word [edx + esi*2]
add eax, dword [ecx + edx*4]
mov dword [esp + 0x628], eax
mov eax, dword [esp + 0x628]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x194]
mov dword [esp + 0x19c], eax
mov eax, dword [esp + 0x19c]
mov dword [esp + 0x1d8], eax
mov eax, dword [esp + 0x1d8]
mov dword [esp + 0xc], eax
mov dword [esp + 0x1dc], eax
mov eax, dword [esp + 0x1dc]
movsx eax, byte [eax + 0xf]
cmp eax, 0
je 0x4116e9
mov eax, dword [esp + 0xc]
mov dword [esp + 0x204], eax
mov dword [esp + 0x200], eax
mov eax, dword [esp + 0x204]
mov dword [esp + 4], eax
mov dword [esp + 0x1fc], 0
cmp dword [esp + 0x1fc], 0x10
jge 0x4116e7
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x200]
mov edx, dword [esp + 0x1fc]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc2
xor ecx, 0xca
mov dl, cl
mov ecx, dword [esp + 0x1fc]
mov byte [eax + ecx], dl
mov eax, dword [esp + 0x1fc]
add eax, 1
mov dword [esp + 0x1fc], eax
jmp 0x41169f
jmp 0x4116e9
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov dword [esp], ecx
call eax
sub esp, 4
mov dword [esp + 0xa4], 0
cmp dword [esp + 0xa4], 0x49
jae 0x41171e
mov eax, dword [esp + 0x120]
mov dword [esp + 0x158], eax
jmp 0x411720
ud2
mov eax, dword [esp + 0x158]
lea esp, [ebp - 4]
pop esi
pop ebp
ret