Function at 0x40f890
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.004119a0
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 0x40fb4b
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 0x40fb49
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], 0x607f8a35
mov dword [esp + 0x2a8], 0x886c2f5
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 0x40fb1c
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 0x40faeb
movsx eax, byte [esp + 0x2db]
cmp eax, 0x5a
jg 0x40faeb
movsx eax, byte [esp + 0x2db]
or eax, 0x20
mov dword [esp + 0x9c], eax
jmp 0x40fafa
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 0x40fa69
mov eax, dword [esp + 0x294]
mov dword [esp + 0x2b4], 0x607f8a35
mov dword [esp + 0x2b0], 0x886c2f5
mov ecx, dword [esp + 0x2b0]
cmp eax, ecx
je 0x40fb79
jmp 0x40f9d9
jmp 0x40fb4b
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 0x40f918
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 0x40fca9
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 0x40fca7
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x254]
mov edx, dword [esp + 0x250]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc4
xor ecx, 0xc2
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 0x40fc5c
jmp 0x40fca9
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 0x40fcec
mov dword [esp + 0x140], 0
cmp dword [esp + 0x140], 0x30
jae 0x40fcea
mov dword [esp + 0x158], 0
jmp 0x411990
jmp 0x40fcec
lea ecx, [esp + 0x12f]
lea eax, [esp + 0x12e]
mov dword [esp], eax
call fcn.00411a00
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 0x40ff94
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 0x40ff92
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], 0x280cefad
mov dword [esp + 0x330], 0xa020d73d
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 0x40ff65
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 0x40ff34
movsx eax, byte [esp + 0x363]
cmp eax, 0x5a
jg 0x40ff34
movsx eax, byte [esp + 0x363]
or eax, 0x20
mov dword [esp + 0x88], eax
jmp 0x40ff43
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 0x40feb2
mov eax, dword [esp + 0x31c]
mov dword [esp + 0x33c], 0x280cefad
mov dword [esp + 0x338], 0xa020d73d
mov ecx, dword [esp + 0x338]
cmp eax, ecx
je 0x40ffc2
jmp 0x40fe22
jmp 0x40ff94
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 0x40fd61
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 0x4100ec
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 0x4100ea
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x248]
mov edx, dword [esp + 0x244]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc4
xor ecx, 0xc2
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 0x4100a2
jmp 0x4100ec
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.00407dd0
mov dword [esp + 0x128], eax
cmp dword [esp + 0x128], 0
jne 0x410145
mov dword [esp + 0x124], 0
cmp dword [esp + 0x124], 0x27
jae 0x410143
mov dword [esp + 0x158], 0
jmp 0x411990
jmp 0x410145
mov dword [esp + 0x120], 0
lea ecx, [esp + 0x10f]
lea eax, [esp + 0x10e]
mov dword [esp], eax
call fcn.00411a60
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 0x4103e5
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 0x4103e3
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], 0x5731b132
mov dword [esp + 0x3b8], 0xe90084b6
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 0x4103b6
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 0x41038e
movsx eax, byte [esp + 0x3eb]
cmp eax, 0x5a
jg 0x41038e
movsx eax, byte [esp + 0x3eb]
or eax, 0x20
mov dword [esp + 0x74], eax
jmp 0x41039a
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 0x410316
mov eax, dword [esp + 0x3a4]
mov dword [esp + 0x3c4], 0x5731b132
mov dword [esp + 0x3c0], 0xe90084b6
mov ecx, dword [esp + 0x3c0]
cmp eax, ecx
je 0x410413
jmp 0x410286
jmp 0x4103e5
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 0x4101c5
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 0x410534
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 0x410532
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x23c]
mov edx, dword [esp + 0x238]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc4
xor ecx, 0xc2
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 0x4104ea
jmp 0x410534
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.00411ac0
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 0x4107e7
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 0x4107e5
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], 0x16a9a0f3
mov dword [esp + 0x440], 0xcd9db3ef
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 0x4107b8
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 0x410790
movsx eax, byte [esp + 0x473]
cmp eax, 0x5a
jg 0x410790
movsx eax, byte [esp + 0x473]
or eax, 0x20
mov dword [esp + 0x60], eax
jmp 0x41079c
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 0x410718
mov eax, dword [esp + 0x42c]
mov dword [esp + 0x44c], 0x16a9a0f3
mov dword [esp + 0x448], 0xcd9db3ef
mov ecx, dword [esp + 0x448]
cmp eax, ecx
je 0x410815
jmp 0x410688
jmp 0x4107e7
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 0x4105c7
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 0x410936
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 0x410934
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x230]
mov edx, dword [esp + 0x22c]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc4
xor ecx, 0xc2
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 0x4108ec
jmp 0x410936
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.00411b20
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 0x410bf7
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 0x410bf5
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], 0xe37d7e10
mov dword [esp + 0x4c8], 0x30ef4ed8
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 0x410bc8
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 0x410ba0
movsx eax, byte [esp + 0x4fb]
cmp eax, 0x5a
jg 0x410ba0
movsx eax, byte [esp + 0x4fb]
or eax, 0x20
mov dword [esp + 0x4c], eax
jmp 0x410bac
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 0x410b28
mov eax, dword [esp + 0x4b4]
mov dword [esp + 0x4d4], 0xe37d7e10
mov dword [esp + 0x4d0], 0x30ef4ed8
mov ecx, dword [esp + 0x4d0]
cmp eax, ecx
je 0x410c25
jmp 0x410a98
jmp 0x410bf7
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 0x4109d7
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 0x410d46
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 0x410d44
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x224]
mov edx, dword [esp + 0x220]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc4
xor ecx, 0xc2
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 0x410cfc
jmp 0x410d46
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.00411b80
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 0x410feb
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 0x410fe9
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], 0x9dfb6971
mov dword [esp + 0x550], 0x69e62a21
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 0x410fbc
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 0x410f94
movsx eax, byte [esp + 0x583]
cmp eax, 0x5a
jg 0x410f94
movsx eax, byte [esp + 0x583]
or eax, 0x20
mov dword [esp + 0x38], eax
jmp 0x410fa0
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 0x410f1c
mov eax, dword [esp + 0x53c]
mov dword [esp + 0x55c], 0x9dfb6971
mov dword [esp + 0x558], 0x69e62a21
mov ecx, dword [esp + 0x558]
cmp eax, ecx
je 0x411019
jmp 0x410e8c
jmp 0x410feb
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 0x410dcb
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 0x41113a
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 0x411138
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x218]
mov edx, dword [esp + 0x214]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc4
xor ecx, 0xc2
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 0x4110f0
jmp 0x41113a
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 0x411575
lea ecx, [esp + 0xc1]
lea eax, [esp + 0xc0]
mov dword [esp], eax
call fcn.00411be0
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 0x4113ef
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 0x4113ed
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], 0xd2cac6cc
mov dword [esp + 0x5d8], 0xe66b8584
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 0x4113c0
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 0x411398
movsx eax, byte [esp + 0x60b]
cmp eax, 0x5a
jg 0x411398
movsx eax, byte [esp + 0x60b]
or eax, 0x20
mov dword [esp + 0x24], eax
jmp 0x4113a4
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 0x411320
mov eax, dword [esp + 0x5c4]
mov dword [esp + 0x5e4], 0xd2cac6cc
mov dword [esp + 0x5e0], 0xe66b8584
mov ecx, dword [esp + 0x5e0]
cmp eax, ecx
je 0x41141d
jmp 0x411290
jmp 0x4113ef
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 0x4111cf
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 0x41153e
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 0x41153c
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20c]
mov edx, dword [esp + 0x208]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc4
xor ecx, 0xc2
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 0x4114f4
jmp 0x41153e
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], 0x26
jae 0x411573
mov dword [esp + 0x158], 0
jmp 0x411990
jmp 0x411575
lea ecx, [esp + 0xab]
lea eax, [esp + 0xaa]
mov dword [esp], eax
call fcn.00411c40
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 0x41180a
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 0x411808
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], 0xe3a61657
mov dword [esp + 0x660], 0x400ef4d3
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 0x4117db
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 0x4117b3
movsx eax, byte [esp + 0x693]
cmp eax, 0x5a
jg 0x4117b3
movsx eax, byte [esp + 0x693]
or eax, 0x20
mov dword [esp + 0x10], eax
jmp 0x4117bf
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 0x41173b
mov eax, dword [esp + 0x64c]
mov dword [esp + 0x66c], 0xe3a61657
mov dword [esp + 0x668], 0x400ef4d3
mov ecx, dword [esp + 0x668]
cmp eax, ecx
je 0x411838
jmp 0x4116ab
jmp 0x41180a
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 0x4115ea
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 0x411959
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 0x411957
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x200]
mov edx, dword [esp + 0x1fc]
movsx ecx, byte [ecx + edx]
xor ecx, 0xffffffc4
xor ecx, 0xc2
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 0x41190f
jmp 0x411959
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], 0x1d
jae 0x41198e
mov eax, dword [esp + 0x120]
mov dword [esp + 0x158], eax
jmp 0x411990
ud2
mov eax, dword [esp + 0x158]
lea esp, [ebp - 4]
pop esi
pop ebp
ret