Function at 0x402890
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xbc
test eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0x98], 0
je 0x404783
mov eax, dword [eax]
test eax, eax
je 0x404783
test edx, edx
mov esi, edx
je 0x404783
mov dword [esp + 0xa0], 0
call sub.msvcrt.dll_localeconv
mov eax, dword [eax]
mov dword [esp + 0x50], eax
call sub.msvcrt.dll_localeconv
mov eax, dword [eax + 4]
test eax, eax
mov dword [esp + 0x2c], eax
mov edi, eax
je 0x402921
cmp byte [eax], 0
mov eax, 0
cmovne eax, edi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x44]
xor edi, edi
mov dword [esp + 0x30], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x3c], 0
mov ebp, edi
mov dword [esp + 0x4c], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x48], eax
mov dword [esp + 0x58], 0
mov dword [esp + 0x40], 0
movzx eax, byte [esi]
test al, al
je 0x403acf
js 0x402ca0
cmp al, 0x25
lea ebx, [esi + 1]
je 0x4029a0
movzx esi, al
mov dword [esp], esi
call sub.msvcrt.dll_isspace
test eax, eax
je 0x402ab1
mov dword [esp + 0x20], 1
mov esi, ebx
jmp 0x402965
movzx edx, byte [esi + 1]
mov dword [esp + 0x38], 0
mov eax, edx
sub edx, 0x30
cmp edx, 9
jbe 0x402b70
xor edx, edx
mov ecx, dword [esp + 0x2c]
jmp 0x4029dc
cmp al, 0x27
je 0x4029f0
cmp al, 0x49
jne 0x402a24
movzx eax, byte [ebx + 1]
cmp al, 0x36
je 0x402a00
cmp al, 0x33
je 0x402a12
or edx, 4
add ebx, 1
cmp al, 0x2a
jne 0x4029c2
or dl, 0x80
movzx eax, byte [ebx + 1]
jmp 0x4029d9
test ecx, ecx
je 0x4029f7
or dh, 1
movzx eax, byte [ebx + 1]
jmp 0x4029d9
cmp byte [ebx + 2], 0x34
jne 0x4029d6
movzx eax, byte [ebx + 3]
or edx, 0xc
add ebx, 2
jmp 0x4029d9
cmp byte [ebx + 2], 0x32
jne 0x4029d6
movzx eax, byte [ebx + 3]
or edx, 4
add ebx, 2
jmp 0x4029d9
mov dword [esp + 0x28], edx
movzx edx, al
xor esi, esi
lea ecx, [edx - 0x30]
cmp ecx, 9
ja 0x403ac5
lea esi, [esi]
lea eax, [esi + esi*4]
add ebx, 1
lea esi, [edx + eax*2 - 0x30]
movzx edx, byte [ebx]
lea ecx, [edx - 0x30]
mov eax, edx
cmp ecx, 9
jbe 0x402a40
test esi, esi
mov edx, 0xffffffff
cmove esi, edx
cmp al, 0x6a
je 0x403aac
jle 0x402bd0
cmp al, 0x71
je 0x403a93
jg 0x402d10
cmp al, 0x6c
je 0x402d5f
cmp al, 0x6d
jne 0x402d4f
movzx eax, byte [ebx + 1]
cmp al, 0x6c
mov byte [esp + 0x34], al
je 0x4047ba
lea eax, [ebx + 1]
or dword [esp + 0x28], 0x400
mov dword [esp + 0x54], eax
jmp 0x402c10
lea eax, [esp + 0x90]
mov dword [esp + 0x1c], eax
mov edx, eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
je 0x4047ef
mov eax, dword [esp + 0x20]
test eax, eax
je 0x402b50
mov dword [esp], ebp
call sub.msvcrt.dll_isspace
test eax, eax
je 0x402b50
mov dword [esp + 0x20], ebx
mov edi, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
jmp 0x402b00
mov dword [esp], eax
call sub.msvcrt.dll_isspace
test eax, eax
je 0x402b42
mov edx, ebp
mov eax, edi
call fcn.004027a0
cmp eax, 0xffffffff
mov ebx, eax
jne 0x402af4
mov edi, eax
mov eax, dword [esp + 0x3c]
test eax, eax
cmovne edi, eax
lea eax, [esp + 0x98]
mov ecx, dword [esp + 0x24]
lea edx, [esp + 0x8c]
mov dword [esp], eax
mov eax, edi
call fcn.004026f0
add esp, 0xbc
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebp, ebx
mov ebx, dword [esp + 0x20]
nop
lea esi, [esi]
cmp esi, ebp
jne 0x402c50
mov dword [esp + 0x20], 0
mov esi, ebx
jmp 0x402965
lea ecx, [esi + 2]
movzx esi, byte [esi + 2]
mov dword [esp + 0x38], edx
mov edx, esi
movzx edx, dl
lea edi, [edx - 0x30]
cmp edi, 9
ja 0x402bb3
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x38]
mov edi, eax
lea eax, [ebx + ebx*4]
add ecx, 1
lea ebx, [edx + eax*2 - 0x30]
movzx edx, byte [ecx]
lea esi, [edx - 0x30]
cmp esi, 9
jbe 0x402b92
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x1c]
mov esi, edx
mov eax, edi
mov edx, esi
cmp dl, 0x24
je 0x403a5d
mov dword [esp + 0x38], 0
jmp 0x4029ba
cmp al, 0x4c
je 0x403a93
jle 0x403a86
cmp al, 0x61
je 0x402d31
cmp al, 0x68
jne 0x402d4f
movzx eax, byte [ebx + 1]
cmp al, 0x68
mov byte [esp + 0x34], al
je 0x4047d6
or dword [esp + 0x28], 2
lea eax, [ebx + 1]
mov dword [esp + 0x54], eax
lea esi, [esi]
cmp byte [esp + 0x34], 0
je case.0x402c49.1
mov eax, dword [esp + 0x54]
lea ebx, [eax + 1]
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x402d90
movzx ecx, byte [esp + 0x34]
cmp cl, 0x5b
mov eax, ecx
jne 0x402d80
movzx eax, byte [esp + 0x34]
sub eax, 0x25
cmp al, 0x53
ja case.0x402c49.1
movzx eax, al
jmp dword [eax*4 + 0x4104c4]
mov edi, ebp
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov eax, edi
mov dword [esp], 0
call fcn.00402830
jmp case.0x402c49.1
fstp st(0)
jmp case.0x402c49.1
fstp st(0)
jmp case.0x402c49.1
fstp st(0)
lea eax, [esp + 0x98]
mov ecx, dword [esp + 0x24]
lea edx, [esp + 0x8c]
mov dword [esp], eax
mov eax, dword [esp + 0x3c]
call fcn.004026f0
add esp, 0xbc
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp], esi
call sub.msvcrt.dll_strlen
lea edx, [esp + 0xa0]
mov dword [esp + 4], eax
mov dword [esp], esi
mov dword [esp + 8], edx
call fcn.00405c90
test eax, eax
jle 0x403a69
lea edi, [esi + eax]
mov ebx, esi
lea eax, [esp + 0x90]
mov esi, dword [esp + 0x18]
mov ebp, edi
mov dword [esp + 0x1c], eax
mov edi, eax
mov edx, edi
mov eax, esi
call fcn.004027a0
cmp eax, 0xffffffff
je 0x403b22
add ebx, 1
movzx edx, byte [ebx - 1]
cmp eax, edx
jne 0x403b22
cmp ebx, ebp
jne 0x402cdf
mov ebp, eax
mov esi, ebx
jmp 0x402965
cmp al, 0x74
je 0x402d18
cmp al, 0x7a
jne 0x402d4f
lea eax, [ebx + 1]
or dword [esp + 0x28], 4
mov dword [esp + 0x54], eax
movzx eax, byte [ebx + 1]
mov byte [esp + 0x34], al
jmp 0x402c10
movzx eax, byte [ebx + 1]
mov ecx, eax
mov byte [esp + 0x34], al
and eax, 0xfffffff7
cmp al, 0x53
je 0x403b4b
cmp cl, 0x73
je 0x403b4b
movzx eax, byte [ebx]
mov dword [esp + 0x54], ebx
mov byte [esp + 0x34], al
jmp 0x402c10
movzx eax, byte [ebx + 1]
cmp al, 0x6c
mov byte [esp + 0x34], al
je 0x4047a1
lea eax, [ebx + 1]
or dword [esp + 0x28], 4
mov dword [esp + 0x54], eax
jmp 0x402c10
and eax, 0xffffffdf
cmp al, 0x43
je 0x402e0b
cmp cl, 0x6e
je 0x402e0b
call sub.msvcrt.dll__errno
mov edi, dword [eax]
call sub.msvcrt.dll__errno
mov dword [eax], 0
lea eax, [esp + 0x90]
cmp ebp, 0xffffffff
mov dword [esp + 0x1c], eax
je 0x403a34
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x18]
mov ebp, eax
mov dword [esp + 0x5c], esi
mov edx, ebp
mov eax, ebx
call fcn.004027a0
cmp eax, 0xffffffff
mov esi, eax
je 0x403a53
mov dword [esp], eax
call sub.msvcrt.dll_isspace
test eax, eax
jne 0x402dc4
mov ebp, esi
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x5c]
call sub.msvcrt.dll__errno
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov dword [eax], edi
mov dword [esp], 0
mov eax, ebp
call fcn.00402830
movzx eax, byte [esp + 0x34]
cmp al, 0x63
je 0x402fc3
cmp al, 0x73
jne 0x402c3a
test byte [esp + 0x28], 4
jne case.0x402c49.46
mov edi, dword [esp + 0x28]
mov eax, edi
and eax, 0x80
mov dword [esp + 0x20], eax
jne 0x402ecc
mov eax, edi
test ah, 6
je 0x403c28
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x404c4f
mov edi, dword [esp + 0x44]
cmp ecx, 1
lea eax, [edi + ecx*4 - 4]
cmove eax, edi
mov eax, dword [eax]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
test eax, eax
je 0x405562
mov dword [esp], 0x64
call sub.msvcrt.dll_malloc
mov edi, eax
mov eax, dword [esp + 0x24]
test edi, edi
mov dword [eax], edi
je 0x405549
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x402ea5
mov edx, dword [eax]
cmp edx, 0x1f
jbe 0x402eac
call fcn.00402780
mov edx, dword [eax]
lea ecx, [edx + 1]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x58], edi
mov dword [esp + 0x40], 0x64
mov dword [eax], ecx
mov ecx, dword [esp + 0x24]
mov dword [eax + edx*4 + 8], ecx
lea eax, [esp + 0x90]
mov dword [esp + 0x1c], eax
mov edx, eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
je 0x4047ef
mov eax, dword [esp + 0x28]
mov dword [esp + 0x38], ebx
mov ebx, ebp
mov edi, dword [esp + 0x58]
mov ebp, dword [esp + 0x20]
and eax, 0x600
mov dword [esp + 0x34], eax
jmp 0x402f4c
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x40]
mov eax, dword [eax]
lea ecx, [eax + edi]
mov edi, edx
cmp edx, ecx
je 0x404481
test esi, esi
jle 0x402f34
sub esi, 1
je 0x4042e9
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebx, eax
je 0x4042e9
mov dword [esp], ebx
call sub.msvcrt.dll_isspace
test eax, eax
jne 0x4047f6
test ebp, ebp
jne 0x402f27
mov eax, dword [esp + 0x34]
lea edx, [edi + 1]
mov byte [edi], bl
test eax, eax
jne 0x402f10
mov edi, edx
jmp 0x402f27
mov ecx, dword [esp + 0x28]
mov eax, ecx
and eax, 0x80
mov dword [esp + 0x20], eax
jne 0x402b58
mov eax, ecx
test al, 8
je 0x4049f0
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x404ce9
mov edi, dword [esp + 0x44]
cmp ecx, 1
lea eax, [edi + ecx*4 - 4]
cmove eax, edi
mov eax, dword [eax]
mov ecx, dword [esp + 0x90]
mov dword [eax + 4], 0
mov esi, ebx
mov dword [eax], ecx
jmp 0x402965
test byte [esp + 0x28], 4
jne case.0x402c49.30
mov edi, dword [esp + 0x28]
cmp esi, 0xffffffff
mov eax, 1
cmove esi, eax
mov eax, edi
and eax, 0x80
mov dword [esp + 0x20], eax
jne 0x404922
mov eax, edi
and eax, 0x600
mov dword [esp + 0x34], eax
jne 0x403cc2
mov edi, dword [esp + 0x38]
test edi, edi
je 0x404ca7
mov ecx, dword [esp + 0x44]
cmp edi, 1
lea eax, [ecx + edi*4 - 4]
cmove eax, ecx
mov eax, dword [eax]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x58]
test eax, eax
je case.0x402c49.1
lea eax, [esp + 0x90]
mov dword [esp + 0x1c], eax
mov edx, eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
je 0x405457
mov dword [esp + 0x38], ebx
mov edi, dword [esp + 0x58]
jmp 0x4030a3
mov eax, dword [esp + 0x24]
mov edx, dword [eax]
mov eax, dword [esp + 0x40]
lea ecx, [edx + eax]
mov ebx, eax
mov eax, edi
cmp edi, ecx
je 0x404330
sub esi, 1
mov ecx, ebp
lea edi, [eax + 1]
test esi, esi
mov byte [eax], cl
jle 0x40465a
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
je 0x40465a
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x403060
mov ebx, dword [esp + 0x40]
mov eax, edi
jmp 0x403079
mov edi, dword [esp + 0x28]
mov eax, edi
and eax, 4
mov dword [esp + 0x20], eax
jne 0x403b5f
mov eax, dword [esp + 0x28]
test al, 0x80
jne 0x40315c
test ah, 6
je 0x404e8c
mov edi, dword [esp + 0x38]
test edi, edi
je 0x4051c4
mov ecx, dword [esp + 0x44]
cmp edi, 1
lea eax, [ecx + edi*4 - 4]
cmove eax, ecx
mov eax, dword [eax]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
test eax, eax
je 0x405562
mov dword [esp], 0x64
call sub.msvcrt.dll_malloc
mov edi, eax
mov eax, dword [esp + 0x24]
test edi, edi
mov dword [eax], edi
je 0x405549
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x403135
mov edx, dword [eax]
cmp edx, 0x1f
jbe 0x40313c
call fcn.00402780
mov edx, dword [eax]
lea ecx, [edx + 1]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x58], edi
mov dword [esp + 0x40], 0x64
mov dword [eax], ecx
mov ecx, dword [esp + 0x24]
mov dword [eax + edx*4 + 8], ecx
mov edi, dword [esp + 0x54]
movzx eax, byte [edi + 1]
lea edx, [edi + 2]
cmp al, 0x5e
sete byte [esp + 0x34]
cmp al, 0x5e
mov eax, 0x7fffffff
cmove ebx, edx
test esi, esi
cmovs esi, eax
cmp dword [esp + 0x94], 0xff
jbe 0x40461c
mov eax, dword [esp + 0x98]
lea edi, [eax + 4]
mov dword [eax], 0
mov dword [eax + 0xfc], 0
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
xor eax, eax
shr ecx, 2
rep stosd dword es:[edi], eax
movzx eax, byte [ebx]
cmp al, 0x5d
je 0x404606
cmp al, 0x2d
jne 0x4031e1
jmp 0x404606
mov edx, dword [esp + 0x98]
mov byte [edx + eax], 1
movzx edx, byte [ebx]
movzx eax, dl
add ebx, 1
test al, al
je case.0x402c49.1
cmp al, 0x5d
je 0x404141
cmp al, 0x2d
jne 0x4031d0
movzx edx, byte [ebx]
test dl, dl
je 0x4031d0
cmp dl, 0x5d
je 0x4031d0
movzx ecx, byte [ebx - 2]
cmp cl, dl
ja 0x4031d0
jae 0x4031de
nop
mov edx, dword [esp + 0x98]
movzx eax, cl
add ecx, 1
mov byte [edx + eax], 1
cmp byte [ebx], cl
ja 0x403210
jmp 0x4031db
movzx eax, byte [esp + 0x34]
sub eax, 0x58
cmp al, 0x20
ja case.0x40323a.1
movzx eax, al
jmp dword [eax*4 + 0x410614]
mov ecx, dword [esp + 0x28]
mov eax, ecx
and eax, 0x80
mov dword [esp + 0x20], eax
jne 0x4032e0
test ch, 6
je 0x403c91
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x404cbd
mov edi, dword [esp + 0x44]
cmp ecx, 1
lea eax, [edi + ecx*4 - 4]
cmove eax, edi
mov eax, dword [eax]
mov dword [esp + 0x24], eax
mov edi, dword [esp + 0x24]
test edi, edi
je 0x405562
mov dword [esp], 0xc8
call sub.msvcrt.dll_malloc
mov edi, eax
mov eax, dword [esp + 0x24]
test edi, edi
mov dword [eax], edi
je 0x405549
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x4032b9
mov edx, dword [eax]
cmp edx, 0x1f
jbe 0x4032c0
call fcn.00402780
mov edx, dword [eax]
lea ecx, [edx + 1]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x4c], edi
mov dword [esp + 0x40], 0x64
mov dword [eax], ecx
mov ecx, dword [esp + 0x24]
mov dword [eax + edx*4 + 8], ecx
lea eax, [esp + 0x90]
mov dword [esp + 0x1c], eax
mov edx, eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
je 0x4047ef
mov dword [esp + 0x38], esi
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
mov dword [esp + 0xa4], 0
mov dword [esp + 0x34], ebx
mov dword [esp], ebp
call sub.msvcrt.dll_isspace
test eax, eax
jne 0x4054f6
mov edx, dword [esp + 0x20]
mov ecx, ebp
mov byte [esp + 0xab], cl
test edx, edx
cmove eax, dword [esp + 0x4c]
mov ebx, eax
mov eax, ebp
mov ebp, ebx
mov ebx, eax
jmp 0x403357
mov byte [esp + 0xab], al
lea eax, [esp + 0xa4]
mov dword [esp + 8], 1
mov dword [esp], ebp
mov dword [esp + 0xc], eax
lea eax, [esp + 0xab]
mov dword [esp + 4], eax
call fcn.00405b10
cmp eax, 0xfffffffe
jne 0x4046b7
mov edx, esi
mov eax, edi
call fcn.004027a0
cmp eax, 0xffffffff
mov ebx, eax
jne 0x403350
call sub.msvcrt.dll__errno
mov dword [eax], 0x2a
jmp case.0x402c49.1
lea eax, [esp + 0x90]
mov dword [esp + 0x1c], eax
mov edx, eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
je 0x4047ef
cmp eax, 0x25
je 0x402b58
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov dword [esp], 1
call fcn.00402830
jmp case.0x402c49.1
mov ecx, dword [esp + 0x28]
cmp esi, 0xffffffff
mov eax, 1
cmove esi, eax
mov eax, ecx
and eax, 0x80
mov dword [esp + 0x20], eax
jne 0x4034a2
test ch, 6
je 0x403c60
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x404c91
mov edi, dword [esp + 0x44]
cmp ecx, 1
lea eax, [edi + ecx*4 - 4]
cmove eax, edi
mov eax, dword [eax]
mov dword [esp + 0x24], eax
mov ebp, dword [esp + 0x24]
test ebp, ebp
je 0x405562
cmp esi, 0x400
mov eax, 0x400
cmovle eax, esi
mov dword [esp + 0x40], eax
add eax, eax
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov edi, eax
mov eax, dword [esp + 0x24]
test edi, edi
mov dword [eax], edi
je 0x405549
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x403483
mov edx, dword [eax]
cmp edx, 0x1f
jbe 0x40348a
call fcn.00402780
mov edx, dword [eax]
lea ecx, [edx + 1]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x4c], edi
mov dword [eax], ecx
mov ecx, dword [esp + 0x24]
mov dword [eax + edx*4 + 8], ecx
lea eax, [esp + 0x90]
mov dword [esp + 0x1c], eax
mov edx, eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
je 0x4047ef
mov eax, dword [esp + 0x28]
mov edi, ebp
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0xa4], 0
mov dword [esp + 0x38], ebx
mov dword [esp + 0x28], esi
and eax, 0x600
mov dword [esp + 0x34], eax
mov ecx, dword [esp + 0x20]
mov eax, edi
mov byte [esp + 0xab], al
test ecx, ecx
jne 0x403566
mov edx, dword [esp + 0x34]
test edx, edx
je 0x403566
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
mov eax, dword [esp + 0x40]
add eax, eax
mov dword [esp + 0x1c], eax
add eax, ecx
cmp dword [esp + 0x4c], eax
jne 0x403566
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x40]
lea ebx, [esi - 1]
cmp eax, esi
lea esi, [eax + 1]
cmovle ebx, eax
add ebx, eax
jmp 0x403541
cmp ebx, esi
jbe 0x40481b
mov eax, dword [esp + 0x24]
mov ebx, esi
mov ecx, dword [eax]
lea eax, [ebx + ebx]
mov dword [esp], ecx
mov dword [esp + 4], eax
call sub.msvcrt.dll_realloc
test eax, eax
je 0x403531
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x40], ebx
mov dword [ecx], eax
add eax, dword [esp + 0x1c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x20]
mov ebx, 0
lea esi, [esp + 0xab]
test eax, eax
cmove ebx, dword [esp + 0x4c]
jmp 0x403587
mov byte [esp + 0xab], al
lea eax, [esp + 0xa4]
mov dword [esp + 8], 1
mov dword [esp + 4], esi
mov dword [esp], ebx
mov dword [esp + 0xc], eax
call fcn.00405b10
cmp eax, 0xfffffffe
jne 0x4044dc
mov eax, dword [esp + 0x18]
mov edx, ebp
call fcn.004027a0
cmp eax, 0xffffffff
mov edi, eax
jne 0x403580
jmp 0x403396
xor eax, eax
test esi, esi
setg al
sub esi, eax
lea eax, [esp + 0x90]
mov dword [esp + 0x1c], eax
mov edx, eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov dword [esp + 0x68], eax
je 0x405491
mov eax, dword [esp + 0x68]
sub eax, 0x2b
and eax, 0xfffffffd
je 0x403bf8
mov ebp, dword [esp + 0x68]
mov dword [esp], ebp
call sub.msvcrt.dll_tolower
cmp eax, 0x6e
je 0x404f86
cmp eax, 0x69
je 0x404ec0
test esi, esi
mov byte [esp + 0x60], 0x65
mov dword [esp + 0x20], 0
je 0x40363a
cmp ebp, 0x30
je 0x40515f
mov eax, dword [esp + 0x28]
mov dword [esp + 0x70], ebx
mov byte [esp + 0x5c], 0
mov ebx, dword [esp + 0x20]
mov byte [esp + 0x54], 0
mov dword [esp + 0x20], esi
and eax, 0x100
mov dword [esp + 0x6c], eax
lea eax, [ebp - 0x30]
cmp eax, 9
jbe 0x403849
lea esi, [esi]
cmp byte [esp + 0x5c], 0
je 0x403fb4
mov ecx, dword [esp + 0x98]
movzx eax, byte [esp + 0x60]
cmp al, byte [ecx + ebx - 1]
je 0x404130
mov edi, dword [esp + 0x20]
mov eax, 0x7fffffff
test edi, edi
cmovg eax, edi
cmp byte [esp + 0x54], 0
mov dword [esp + 0x34], eax
jne 0x404020
mov ecx, dword [esp + 0x50]
movzx edx, byte [ecx]
cmp ebp, edx
mov eax, edx
jne 0x4050ed
cmp byte [ecx + 1], 0
lea edi, [ecx + 1]
je 0x40404e
mov dword [esp + 0x64], ebx
mov ebp, dword [esp + 0x34]
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
jmp 0x403702
movzx ecx, byte [edi]
sub ebp, 1
cmp ecx, eax
jne 0x4042c9
add edi, 1
cmp byte [edi], 0
je 0x40403d
test ebp, ebp
je 0x4042da
mov edx, ebx
mov eax, esi
call fcn.004027a0
cmp eax, 0xffffffff
jne 0x4036e0
mov dword [esp + 0x34], ebp
mov ebp, eax
movzx eax, byte [edi]
mov ebx, dword [esp + 0x64]
test al, al
je 0x404838
mov edx, dword [esp + 0x6c]
test edx, edx
je 0x404029
mov ecx, dword [esp + 0x50]
sub edi, ecx
test edi, edi
jle 0x40538b
mov esi, dword [esp + 0x2c]
movzx eax, byte [esi]
cmp byte [ecx], al
jne 0x405382
mov dword [esp + 0x64], ebx
mov eax, esi
mov ebx, ecx
mov ecx, esi
jmp 0x40376c
movzx edx, byte [ebx + edx]
cmp byte [eax], dl
jne 0x404798
add eax, 1
mov edx, eax
sub edx, ecx
cmp edx, edi
jl 0x403760
mov ebx, dword [esp + 0x64]
cmp edx, edi
jne 0x40402d
movzx ecx, byte [eax]
cmp ecx, ebp
mov edx, ecx
jne 0x4037f2
cmp byte [eax + 1], 0
lea edi, [eax + 1]
je 0x4037fa
mov eax, dword [esp + 0x34]
test eax, eax
je 0x404cfb
mov dword [esp + 0x64], ebx
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x1c]
jmp 0x4037d7
movzx ecx, byte [edi]
sub ebx, 1
cmp ecx, eax
mov edx, ecx
jne 0x405092
add edi, 1
cmp byte [edi], 0
je 0x4051b5
test ebx, ebx
je 0x40546c
mov edx, ebp
mov eax, esi
call fcn.004027a0
cmp eax, 0xffffffff
jne 0x4037b3
movzx edx, byte [edi]
mov dword [esp + 0x34], ebx
mov ebp, eax
mov ebx, dword [esp + 0x64]
test dl, dl
jne 0x404cfb
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x34]
test eax, eax
cmovle edi, eax
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x20]
test edi, edi
je 0x40438f
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
je 0x40438f
test edi, edi
setg al
movzx eax, al
sub edi, eax
lea eax, [ebp - 0x30]
mov dword [esp + 0x20], edi
cmp eax, 9
ja 0x403670
mov ecx, dword [esp + 0x98]
lea edx, [esp + 0x94]
mov eax, ebx
call fcn.00402680
mov ecx, ebp
mov dword [esp + 0x98], eax
mov byte [eax + ebx], cl
add ebx, 1
jmp 0x40380b
mov dword [esp + 0x30], 0xa
lea eax, [esp + 0x90]
mov dword [esp + 0x1c], eax
mov edx, eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
je 0x4047ef
lea eax, [eax - 0x2b]
xor edi, edi
and eax, 0xfffffffd
je 0x4048de
test esi, esi
setne al
cmp ebp, 0x30
jne 0x403d4e
test al, al
je 0x403d4e
test esi, esi
jle 0x404979
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0x98]
sub esi, 1
mov edx, eax
mov eax, edi
call fcn.00402680
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x98], eax
lea ecx, [edi + 1]
mov byte [eax + edi], 0x30
mov eax, dword [esp + 0x18]
mov dword [esp + 0x20], ecx
call fcn.004027a0
test esi, esi
mov ebp, eax
jne 0x4049b1
mov ecx, dword [esp + 0x30]
mov eax, 8
mov edi, eax
test ecx, ecx
cmovne edi, ecx
mov dword [esp + 0x30], edi
cmp dword [esp + 0x20], 1
jne 0x403937
mov eax, dword [esp + 0x98]
movzx eax, byte [eax]
sub eax, 0x2b
test al, 0xfd
je 0x402c50
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov eax, ebp
mov dword [esp], 0
call fcn.00402830
lea eax, [esp + 0x94]
mov dword [esp + 0x34], eax
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x34]
mov eax, edi
call fcn.00402680
mov dword [esp + 0x98], eax
mov byte [eax + edi], 0
mov eax, dword [esp + 0x28]
mov esi, eax
and esi, 8
je 0x404685
test al, 0x10
mov eax, dword [esp + 0x30]
mov dword [esp + 8], eax
lea eax, [esp + 0x9c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x98]
mov dword [esp], eax
je 0x404b30
call fcn.00405cf0
mov dword [esp + 0x74], edx
mov edi, dword [esp + 0x9c]
cmp dword [esp + 0x98], edi
je case.0x402c49.1
mov ecx, dword [esp + 0x28]
mov edi, ecx
and edi, 0x80
mov dword [esp + 0x20], edi
jne 0x402b58
mov edi, ecx
and edi, 0x10
je 0x404b3e
test esi, esi
je 0x404e61
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x4050b7
mov edi, dword [esp + 0x44]
cmp ecx, 1
lea edx, [edi + ecx*4 - 4]
cmove edx, edi
mov edx, dword [edx]
mov dword [edx], eax
mov eax, dword [esp + 0x74]
mov dword [edx + 4], eax
add dword [esp + 0x3c], 1
mov esi, ebx
jmp 0x402965
mov dword [esp], 0xffffffff
call sub.msvcrt.dll_isspace
test eax, eax
je 0x403a71
call sub.msvcrt.dll__errno
cmp dword [eax], 4
jne 0x403a24
mov ecx, dword [esp + 0x3c]
mov eax, 0xffffffff
test ecx, ecx
cmovne eax, ecx
mov edi, eax
jmp 0x402b1b
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x5c]
jmp 0x403a34
lea ebx, [ecx + 1]
movzx eax, byte [ecx + 1]
jmp 0x4029ba
movzx eax, byte [esi]
jmp 0x402976
lea eax, [esp + 0x90]
mov ebp, 0xffffffff
mov dword [esp + 0x1c], eax
jmp 0x402dee
test al, al
je case.0x402c49.1
jmp 0x402d4f
lea eax, [ebx + 1]
or dword [esp + 0x28], 0xc
mov dword [esp + 0x54], eax
movzx eax, byte [ebx + 1]
mov byte [esp + 0x34], al
jmp 0x402c10
lea eax, [ebx + 1]
or dword [esp + 0x28], 8
mov dword [esp + 0x54], eax
movzx eax, byte [ebx + 1]
mov byte [esp + 0x34], al
jmp 0x402c10
mov esi, 0xffffffff
jmp 0x402a61
mov edx, dword [esp + 0x20]
test edx, edx
je case.0x402c49.1
lea eax, [esp + 0x90]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x1c], eax
mov edi, eax
lea esi, [esi]
mov edx, edi
mov eax, esi
call fcn.004027a0
mov dword [esp], eax
mov ebx, eax
call sub.msvcrt.dll_isspace
test eax, eax
jne 0x403af0
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov eax, ebx
mov dword [esp], 0
call fcn.00402830
jmp case.0x402c49.1
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov dword [esp], 1
call fcn.00402830
mov edi, dword [esp + 0x3c]
mov eax, 0xffffffff
test edi, edi
cmovne eax, edi
mov edi, eax
jmp 0x402b1b
lea eax, [ebx + 1]
or dword [esp + 0x28], 0x200
mov dword [esp + 0x54], eax
jmp 0x402c10
mov eax, edi
test al, 0x80
jne 0x40315c
test ah, 6
mov ecx, dword [esp + 0x38]
je 0x404ef3
test ecx, ecx
je 0x4050a1
mov edi, dword [esp + 0x44]
cmp ecx, 1
lea eax, [edi + ecx*4 - 4]
cmove eax, edi
mov eax, dword [eax]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
test eax, eax
je 0x405562
mov dword [esp], 0xc8
call sub.msvcrt.dll_malloc
mov edi, eax
mov eax, dword [esp + 0x24]
test edi, edi
mov dword [eax], edi
je 0x405549
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x403bcc
mov edx, dword [eax]
cmp edx, 0x1f
jbe 0x403bd3
call fcn.00402780
mov edx, dword [eax]
lea ecx, [edx + 1]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x4c], edi
mov dword [esp + 0x40], 0x64
mov dword [eax], ecx
mov ecx, dword [esp + 0x24]
mov dword [eax + edx*4 + 8], ecx
jmp 0x40315c
test esi, esi
je case.0x402c49.1
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
je case.0x402c49.1
test esi, esi
jle 0x404d1e
sub esi, 1
jmp 0x403606
mov edi, dword [esp + 0x38]
test edi, edi
je 0x404c65
mov ecx, dword [esp + 0x44]
cmp edi, 1
lea eax, [ecx + edi*4 - 4]
cmove eax, ecx
mov eax, dword [eax]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x58]
test eax, eax
jne 0x402ecc
jmp case.0x402c49.1
mov edi, dword [esp + 0x38]
test edi, edi
je 0x404c7b
mov ecx, dword [esp + 0x44]
cmp edi, 1
lea eax, [ecx + edi*4 - 4]
cmove eax, ecx
mov eax, dword [eax]
mov dword [esp + 0x4c], eax
mov edi, dword [esp + 0x4c]
test edi, edi
jne 0x4034a2
jmp case.0x402c49.1
mov edi, dword [esp + 0x38]
test edi, edi
je 0x404cd3
mov ecx, dword [esp + 0x44]
cmp edi, 1
lea eax, [ecx + edi*4 - 4]
cmove eax, ecx
mov eax, dword [eax]
mov dword [esp + 0x4c], eax
mov ecx, dword [esp + 0x4c]
test ecx, ecx
jne 0x4032e0
jmp case.0x402c49.1
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x404be6
mov edi, dword [esp + 0x44]
cmp ecx, 1
lea eax, [edi + ecx*4 - 4]
cmove eax, edi
mov eax, dword [eax]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
test eax, eax
je 0x405562
cmp esi, 0x400
mov eax, 0x400
cmovle eax, esi
mov dword [esp], eax
mov dword [esp + 0x40], eax
call sub.msvcrt.dll_malloc
mov edi, eax
mov eax, dword [esp + 0x24]
test edi, edi
mov dword [eax], edi
je 0x405549
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x403d2a
mov edx, dword [eax]
cmp edx, 0x1f
jbe 0x403d31
call fcn.00402780
mov edx, dword [eax]
lea ecx, [edx + 1]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x58], edi
mov dword [eax], ecx
mov ecx, dword [esp + 0x24]
mov dword [eax + edx*4 + 8], ecx
jmp 0x40302b
cmp ebp, 0xffffffff
setne dl
and eax, edx
mov edx, dword [esp + 0x30]
test edx, edx
jne 0x403d66
mov dword [esp + 0x30], 0xa
test al, al
mov dword [esp + 0x20], edi
je 0x403dab
mov eax, dword [esp + 0x28]
mov dword [esp + 0x5c], ebx
mov ebx, ebp
and eax, 0x100
mov dword [esp + 0x54], eax
cmp dword [esp + 0x30], 0x10
je 0x403ea1
lea eax, [ebx - 0x30]
cmp eax, 9
ja 0x403f10
lea eax, [ebx - 0x2f]
cmp eax, dword [esp + 0x30]
jle 0x403eb1
mov ebp, ebx
mov ebx, dword [esp + 0x5c]
mov esi, dword [esp + 0x20]
test esi, esi
jne 0x40391b
test byte [esp + 0x28], 0x20
je 0x402c50
mov dword [esp], ebp
call sub.msvcrt.dll_tolower
cmp al, 0x28
jne 0x402c50
mov edi, 0x6e
mov ebp, ebx
mov esi, 0x4104b1
mov ebx, edi
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov edi, eax
je 0x402c52
mov dword [esp], eax
call sub.msvcrt.dll_tolower
cmp bl, al
jne 0x402c52
add esi, 1
movzx ebx, byte [esi]
test bl, bl
jne 0x403de0
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0x98]
mov ebx, ebp
mov ebp, edi
mov dword [esp + 0x34], eax
mov edx, eax
xor eax, eax
call fcn.00402680
mov dword [esp + 0x20], 1
mov dword [esp + 0x98], eax
mov byte [eax], 0x30
jmp 0x403958
mov dword [esp + 0x30], 8
jmp case.0x40323a.1
or dword [esp + 0x28], 0x10
mov dword [esp + 0x30], 0
jmp case.0x40323a.1
or dword [esp + 0x28], 0x10
mov dword [esp + 0x30], 0xa
jmp case.0x40323a.1
mov dword [esp + 0x30], 0x10
jmp case.0x40323a.1
mov eax, dword [esp + 0x28]
mov dword [esp + 0x30], 0x10
and eax, 0xfffffff1
or eax, 0x24
mov dword [esp + 0x28], eax
jmp case.0x40323a.1
mov dword [esp], ebx
call sub.msvcrt.dll_isxdigit
test eax, eax
je 0x403da5
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x98]
lea edx, [esp + 0x94]
mov eax, edi
call fcn.00402680
mov dword [esp + 0x98], eax
mov byte [eax + edi], bl
xor eax, eax
test esi, esi
mov edx, dword [esp + 0x1c]
lea ecx, [edi + 1]
setg al
sub esi, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x20], ecx
call fcn.004027a0
cmp eax, 0xffffffff
mov ebx, eax
setne dl
test esi, esi
setne al
test dl, al
jne 0x403d81
jmp 0x403da5
cmp dword [esp + 0x30], 0xa
jne 0x403da5
mov edi, dword [esp + 0x54]
test edi, edi
je 0x403da5
test esi, esi
mov ecx, 0x7fffffff
cmovg ecx, esi
mov ebp, ecx
mov ecx, dword [esp + 0x2c]
movzx edx, byte [ecx]
cmp edx, ebx
mov eax, edx
jne 0x404c46
cmp byte [ecx + 1], 0
lea edi, [ecx + 1]
je 0x403fa1
mov dword [esp + 0x34], esi
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
jmp 0x403f82
movzx ecx, byte [edi]
sub ebp, 1
cmp ecx, eax
jne 0x4040aa
add edi, 1
cmp byte [edi], 0
je 0x4040b7
test ebp, ebp
je 0x4040c2
mov edx, esi
mov eax, ebx
call fcn.004027a0
cmp eax, 0xffffffff
jne 0x403f60
mov ebx, eax
movzx eax, byte [edi]
mov esi, dword [esp + 0x34]
test al, al
jne 0x405672
mov edi, dword [esp + 0x20]
test esi, esi
cmovle ebp, esi
mov esi, ebp
sub edi, 1
jmp 0x403eb5
test byte [esp + 0x28], 0x40
je 0x403fcb
mov dword [esp], ebp
call sub.msvcrt.dll_isxdigit
test eax, eax
jne 0x403849
test ebx, ebx
je 0x403691
mov dword [esp], ebp
call sub.msvcrt.dll_tolower
cmp byte [esp + 0x60], al
jne 0x403691
mov ecx, dword [esp + 0x98]
lea edx, [esp + 0x94]
mov eax, ebx
call fcn.00402680
movzx ecx, byte [esp + 0x60]
mov dword [esp + 0x98], eax
mov byte [esp + 0x5c], 1
mov byte [esp + 0x54], 1
mov byte [eax + ebx], cl
add ebx, 1
jmp 0x40380b
mov eax, dword [esp + 0x50]
cmp byte [eax], 0
je 0x404090
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x404cfb
movzx edx, byte [eax]
jmp 0x4037f2
mov dword [esp + 0x34], ebp
mov ebp, eax
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x64]
movzx eax, byte [eax]
test al, al
je 0x404090
mov esi, dword [esp + 0x50]
mov edi, ebx
nop
lea esi, [esi]
mov ecx, dword [esp + 0x98]
lea edx, [esp + 0x94]
mov eax, ebx
add esi, 1
add ebx, 1
call fcn.00402680
mov dword [esp + 0x98], eax
movzx edx, byte [esi - 1]
mov byte [eax + edi], dl
cmp byte [esi], 0
mov edi, ebx
jne 0x404060
mov ecx, dword [esp + 0x20]
test ecx, ecx
jle 0x4040a0
mov eax, dword [esp + 0x34]
mov dword [esp + 0x20], eax
mov byte [esp + 0x54], 1
jmp 0x40380b
mov ebx, eax
mov esi, dword [esp + 0x34]
mov eax, ecx
jmp 0x403f99
mov esi, dword [esp + 0x34]
mov ebx, eax
jmp 0x403fa1
mov ebx, dword [esp + 0x5c]
mov ebp, eax
cmp dword [esp + 0x2c], edi
jae 0x403dab
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov eax, ebp
mov dword [esp], 0
lea ebp, [edi - 1]
call fcn.00402830
cmp ebp, dword [esp + 0x2c]
jbe 0x40411d
mov esi, ebp
movzx eax, byte [esi]
mov ecx, dword [esp + 0x1c]
sub esi, 1
mov edx, dword [esp + 0x18]
mov dword [esp], 1
call fcn.00402830
cmp esi, dword [esp + 0x2c]
jne 0x4040f3
mov eax, dword [esp + 0x2c]
sub eax, edi
lea ebp, [ebp + eax + 1]
movzx ebp, byte [ebp]
jmp 0x403dab
lea eax, [ebp - 0x2b]
and eax, 0xfffffffd
jne 0x403691
jmp 0x403850
mov eax, dword [esp + 0x20]
test eax, eax
je 0x404550
mov eax, dword [esp + 0x90]
mov dword [esp + 0x5c], eax
lea eax, [esp + 0x90]
mov dword [esp + 0x1c], eax
mov edx, eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
je 0x4047ef
mov eax, dword [esp + 0x28]
xor edi, edi
mov dword [esp + 0x54], ebx
mov dword [esp + 0x20], edi
mov ebx, ebp
mov dword [esp + 0xa4], 0
mov edi, dword [esp + 0x18]
and eax, 0x80
mov ebp, eax
jmp 0x4041c2
sub esi, 1
test esi, esi
jle 0x404844
mov edx, dword [esp + 0x1c]
mov eax, edi
call fcn.004027a0
cmp eax, 0xffffffff
mov ebx, eax
je 0x404844
mov eax, dword [esp + 0x98]
movzx ecx, byte [esp + 0x34]
cmp cl, byte [eax + ebx]
je 0x404c21
test ebp, ebp
jne 0x4041a1
lea eax, [esp + 0xa4]
mov dword [esp + 8], 1
mov byte [esp + 0xab], bl
mov dword [esp + 0xc], eax
lea eax, [esp + 0xab]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call fcn.00405b10
cmp eax, 0xfffffffe
je 0x404385
add dword [esp + 0x4c], 2
test dword [esp + 0x28], 0x600
mov ecx, dword [esp + 0x4c]
je 0x4042bc
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x20], 0
mov eax, dword [eax]
add edx, edx
mov dword [esp + 0x38], edx
add edx, eax
cmp ecx, edx
jne 0x4041a1
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x20], esi
mov dword [esp + 0x4c], ebx
add ecx, 1
mov ebx, edx
mov esi, ecx
jmp 0x404280
cmp ebx, esi
jbe 0x40504c
mov eax, dword [esp + 0x24]
mov ebx, esi
mov eax, dword [eax]
lea ecx, [ebx + ebx]
mov dword [esp], eax
mov dword [esp + 4], ecx
call sub.msvcrt.dll_realloc
test eax, eax
je 0x404270
mov ecx, dword [esp + 0x24]
mov edx, ebx
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x40], edx
mov dword [esp + 0x20], 0
mov dword [ecx], eax
add eax, dword [esp + 0x38]
mov dword [esp + 0x4c], eax
jmp 0x4041a1
mov dword [esp + 0x20], 0
jmp 0x4041a1
mov dword [esp + 0x34], ebp
mov ebx, dword [esp + 0x64]
mov ebp, eax
mov eax, ecx
jmp 0x40371d
mov dword [esp + 0x34], ebp
mov ebx, dword [esp + 0x64]
mov ebp, eax
jmp 0x403725
mov ebp, ebx
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x58], edi
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x402b58
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x40]
lea esi, [eax + 1]
mov byte [eax], 0
mov eax, dword [esp + 0x24]
mov edx, esi
call fcn.004025d0
mov dword [esp + 0x58], esi
add dword [esp + 0x3c], 1
mov esi, ebx
mov dword [esp + 0x24], 0
jmp 0x402965
mov eax, dword [esp + 0x40]
lea ebx, [esi - 1]
mov dword [esp + 0x28], esi
cmp eax, esi
lea edi, [eax + 1]
cmovl ebx, eax
add ebx, eax
mov esi, ebx
mov ebx, dword [esp + 0x24]
jmp 0x40435c
cmp esi, edi
jbe 0x40481b
mov edx, dword [ebx]
mov esi, edi
mov dword [esp + 4], esi
mov dword [esp], edx
call sub.msvcrt.dll_realloc
test eax, eax
je 0x404350
mov edi, dword [esp + 0x24]
mov ebx, esi
mov esi, dword [esp + 0x28]
mov dword [edi], eax
add eax, dword [esp + 0x40]
mov dword [esp + 0x40], ebx
jmp 0x403079
add dword [esp + 0x20], 1
jmp 0x4041ac
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x70]
mov eax, dword [esp + 0x20]
test eax, eax
je case.0x402c49.1
test byte [esp + 0x28], 0x40
je 0x4043b5
cmp dword [esp + 0x20], 2
je case.0x402c49.1
lea eax, [esp + 0x94]
mov dword [esp + 0x34], eax
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x34]
mov eax, edi
call fcn.00402680
test byte [esp + 0x28], 8
mov dword [esp + 0x98], eax
mov byte [eax + edi], 0
jne 0x404b78
mov edi, dword [esp + 0x28]
mov eax, edi
test al, 4
lea eax, [esp + 0x9c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x98]
mov dword [esp], eax
je 0x404a8b
call fcn.004058b0
mov eax, edi
test al, 0x80
jne 0x404760
mov edx, dword [esp + 0x9c]
mov eax, dword [esp + 0x98]
cmp edx, eax
je 0x402c6a
mov edi, dword [esp + 0x38]
test edi, edi
je 0x4050c9
mov esi, dword [esp + 0x44]
cmp edi, 1
lea ecx, [esi + edi*4 - 4]
cmove ecx, esi
mov ecx, dword [ecx]
cmp dword [esp + 0x68], 0x2d
fstp qword [esp + 0x78]
fld qword [esp + 0x78]
je 0x40447d
fstp qword [ecx]
cmp edx, eax
je case.0x402c49.1
add dword [esp + 0x3c], 1
mov dword [esp + 0x20], 0
mov esi, ebx
jmp 0x402965
fchs
jmp 0x40445f
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x54], ebp
mov dword [esp + 0x58], ebx
mov ebp, dword [esp + 0x24]
lea edx, [ecx + ecx]
lea edi, [ecx + 1]
mov ebx, edx
jmp 0x4044ad
cmp ebx, edi
jbe 0x404ae4
mov eax, dword [ebp]
mov ebx, edi
mov dword [esp + 4], ebx
mov dword [esp], eax
call sub.msvcrt.dll_realloc
test eax, eax
je 0x4044a0
mov edi, dword [esp + 0x24]
mov edx, ebx
mov ebp, dword [esp + 0x54]
mov ebx, dword [esp + 0x58]
mov dword [edi], eax
mov edi, dword [esp + 0x40]
mov dword [esp + 0x40], edx
add edi, eax
jmp 0x402f27
cmp eax, 1
jne 0x403396
sub dword [esp + 0x28], 1
add dword [esp + 0x4c], 2
mov eax, dword [esp + 0x28]
test eax, eax
jle 0x40450d
mov eax, dword [esp + 0x18]
mov edx, ebp
call fcn.004027a0
cmp eax, 0xffffffff
mov edi, eax
jne 0x4034e9
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x38]
mov ebp, edi
test eax, eax
jne 0x402b58
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x4c]
mov esi, ebx
lea ecx, [eax + eax]
mov eax, dword [esp + 0x24]
call fcn.004025d0
add dword [esp + 0x3c], 1
mov dword [esp + 0x24], 0
jmp 0x402965
mov eax, dword [esp + 0x90]
mov dword [esp + 0x5c], eax
lea eax, [esp + 0x90]
mov dword [esp + 0x1c], eax
mov edx, eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
je 0x4047ef
mov edi, dword [esp + 0x28]
mov dword [esp + 0x54], ebx
mov ebx, ebp
mov eax, edi
and eax, 0x80
mov ecx, eax
mov eax, edi
mov edi, dword [esp + 0x58]
and eax, 0x600
mov ebp, ecx
mov dword [esp + 0x38], eax
jmp 0x4045dc
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x40]
mov eax, dword [eax]
lea ecx, [eax + edi]
mov edi, edx
cmp edx, ecx
je 0x404a35
sub esi, 1
test esi, esi
jle 0x40487f
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebx, eax
je 0x40487f
mov eax, dword [esp + 0x98]
movzx ecx, byte [esp + 0x34]
cmp cl, byte [eax + ebx]
je 0x404bfc
test ebp, ebp
jne 0x4045b9
mov ecx, dword [esp + 0x38]
lea edx, [edi + 1]
mov byte [edi], bl
test ecx, ecx
jne 0x4045a2
mov edi, edx
jmp 0x4045b9
mov edx, dword [esp + 0x98]
add ebx, 1
mov byte [edx + eax], 1
movzx eax, byte [ebx]
jmp 0x4031e1
mov edx, dword [esp + 0x98]
mov dword [esp + 0x94], 0x100
mov eax, 0x100
test edx, edx
je 0x404646
mov dword [esp], edx
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x94]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [esp + 0x98], eax
jmp 0x403195
mov dword [esp + 0x58], edi
mov ecx, ebx
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x24]
mov esi, ebx
call fcn.004025d0
add dword [esp + 0x3c], 1
mov dword [esp + 0x24], 0
jmp 0x402965
mov eax, dword [esp + 0x30]
test byte [esp + 0x28], 0x10
mov dword [esp + 8], eax
lea eax, [esp + 0x9c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x98]
mov dword [esp], eax
je 0x404b6e
call sub.msvcrt.dll_strtol
jmp 0x4039b6
cmp eax, 1
mov ebp, ebx
jne 0x403396
mov eax, dword [esp + 0x20]
add dword [esp + 0x4c], 2
mov ebx, dword [esp + 0x4c]
test eax, eax
jne 0x4046f5
test dword [esp + 0x28], 0x600
je 0x4046f5
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
mov eax, dword [esp + 0x40]
lea edx, [eax + eax]
lea eax, [ecx + edx]
cmp ebx, eax
je 0x4054a3
mov eax, dword [esp + 0x38]
test eax, eax
jle 0x404706
sub eax, 1
mov dword [esp + 0x38], eax
je 0x40471a
mov edx, esi
mov eax, edi
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
jne 0x40331c
mov ebx, dword [esp + 0x34]
mov esi, dword [esp + 0x20]
test esi, esi
jne 0x402b58
mov eax, dword [esp + 0x4c]
xor edi, edi
lea esi, [eax + 2]
mov word [eax], di
mov eax, dword [esp + 0x40]
mov edx, esi
lea ecx, [eax + eax]
mov eax, dword [esp + 0x24]
call fcn.004025d0
mov dword [esp + 0x4c], esi
add dword [esp + 0x3c], 1
mov esi, ebx
mov dword [esp + 0x24], 0
jmp 0x402965
fstp st(0)
jmp 0x40476a
fstp st(0)
jmp 0x40476a
fstp st(0)
mov eax, dword [esp + 0x98]
cmp dword [esp + 0x9c], eax
jne 0x402b58
jmp case.0x402c49.1
call sub.msvcrt.dll__errno
mov dword [eax], 0x16
mov eax, 0xffffffff
jmp 0x402c92
mov ebx, dword [esp + 0x64]
jmp 0x404035
lea eax, [ebx + 2]
or dword [esp + 0x28], 0xc
mov dword [esp + 0x54], eax
movzx eax, byte [ebx + 2]
mov byte [esp + 0x34], al
jmp 0x402c10
lea eax, [ebx + 2]
or dword [esp + 0x28], 0x404
mov dword [esp + 0x54], eax
movzx eax, byte [ebx + 2]
mov byte [esp + 0x34], al
jmp 0x402c10
lea eax, [ebx + 2]
or dword [esp + 0x28], 1
mov dword [esp + 0x54], eax
movzx eax, byte [ebx + 2]
mov byte [esp + 0x34], al
jmp 0x402c10
mov edi, ebp
jmp 0x402b12
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ebp, ebx
mov dword [esp], 1
mov eax, ebp
mov dword [esp + 0x58], edi
mov ebx, dword [esp + 0x38]
call fcn.00402830
jmp 0x4042f3
lea eax, [esp + 0x8c]
lea edx, [esp + 0x98]
call fcn.00402600
mov eax, 0xffffffff
jmp 0x402c92
mov eax, dword [esp + 0x50]
movzx eax, byte [eax]
jmp 0x40404e
mov ebp, ebx
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x54]
test edi, edi
jne 0x403396
mov eax, dword [esp + 0x5c]
cmp eax, dword [esp + 0x90]
je case.0x402c49.1
mov eax, dword [esp + 0x28]
and eax, 0x80
mov dword [esp + 0x20], eax
jne 0x402b58
jmp 0x40472a
mov ebp, ebx
mov ebx, dword [esp + 0x54]
mov dword [esp + 0x58], edi
mov eax, dword [esp + 0x5c]
cmp eax, dword [esp + 0x90]
je case.0x402c49.1
test byte [esp + 0x28], 0x80
jne 0x402998
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x40]
lea esi, [eax + 1]
mov byte [eax], 0
mov eax, dword [esp + 0x24]
mov edx, esi
call fcn.004025d0
mov dword [esp + 0x58], esi
add dword [esp + 0x3c], 1
mov esi, ebx
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
jmp 0x402965
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0x98]
mov edi, 1
mov edx, eax
xor eax, eax
call fcn.00402680
mov ecx, ebp
mov dword [esp + 0x98], eax
mov edx, dword [esp + 0x1c]
mov byte [eax], cl
xor eax, eax
test esi, esi
setg al
sub esi, eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
mov ebp, eax
jmp 0x4038a6
lea eax, [esp + 0x90]
mov dword [esp + 0x1c], eax
mov edx, eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
je 0x405457
mov eax, ebp
mov edi, dword [esp + 0x18]
mov ebp, ebx
mov ebx, dword [esp + 0x1c]
jmp 0x40495f
mov edx, ebx
mov eax, edi
call fcn.004027a0
cmp eax, 0xffffffff
je 0x404966
sub esi, 1
test esi, esi
jg 0x404951
mov ebx, ebp
mov dword [esp + 0x20], 0
mov ebp, eax
mov esi, ebx
jmp 0x402965
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0x98]
mov edx, eax
mov eax, edi
call fcn.00402680
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x98], eax
lea ecx, [edi + 1]
mov byte [eax + edi], 0x30
mov eax, dword [esp + 0x18]
mov dword [esp + 0x20], ecx
call fcn.004027a0
mov ebp, eax
mov dword [esp], ebp
call sub.msvcrt.dll_tolower
cmp eax, 0x78
je 0x4053a8
mov ecx, dword [esp + 0x30]
test ecx, ecx
jne 0x405396
cmp ebp, 0xffffffff
mov dword [esp + 0x30], 8
setne al
test esi, esi
setne dl
and eax, edx
test al, al
jne 0x403d6e
jmp 0x40391b
mov eax, dword [esp + 0x28]
and eax, 4
mov dword [esp + 0x20], eax
je 0x404f20
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x405137
mov edi, dword [esp + 0x44]
cmp ecx, 1
lea eax, [edi + ecx*4 - 4]
cmove eax, edi
mov eax, dword [eax]
mov edx, dword [esp + 0x90]
mov dword [esp + 0x20], 0
mov esi, ebx
mov dword [eax], edx
jmp 0x402965
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x58], esi
mov dword [esp + 0x60], ebx
mov esi, dword [esp + 0x24]
lea edx, [ecx + ecx]
lea edi, [ecx + 1]
mov ebx, edx
jmp 0x404a5c
cmp ebx, edi
jbe 0x404e30
mov eax, dword [esi]
mov ebx, edi
mov dword [esp + 4], ebx
mov dword [esp], eax
call sub.msvcrt.dll_realloc
test eax, eax
je 0x404a50
mov edi, dword [esp + 0x24]
mov edx, ebx
mov esi, dword [esp + 0x58]
mov ebx, dword [esp + 0x60]
mov dword [edi], eax
mov edi, dword [esp + 0x40]
mov dword [esp + 0x40], edx
add edi, eax
jmp 0x4045b9
call fcn.00405800
test byte [esp + 0x28], 0x80
jne 0x404764
mov edx, dword [esp + 0x9c]
mov eax, dword [esp + 0x98]
cmp edx, eax
je 0x402c6e
mov edi, dword [esp + 0x38]
test edi, edi
je 0x405125
mov esi, dword [esp + 0x44]
cmp edi, 1
lea ecx, [esi + edi*4 - 4]
cmove ecx, esi
mov ecx, dword [ecx]
cmp dword [esp + 0x68], 0x2d
je 0x404adb
fstp dword [ecx]
jmp 0x404461
fchs
fstp dword [ecx]
jmp 0x404461
test dword [esp + 0x28], 0x400
jne 0x404b67
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x24], 0
mov eax, dword [eax]
mov byte [eax + ecx - 1], 0
mov eax, dword [esp + 0x3c]
add eax, 1
lea edx, [esp + 0x98]
mov ecx, dword [esp + 0x24]
mov dword [esp], edx
lea edx, [esp + 0x8c]
call fcn.004026f0
jmp 0x402c92
call fcn.00406000
mov dword [esp + 0x74], edx
jmp 0x4039b6
test esi, esi
je 0x404f58
mov edi, dword [esp + 0x38]
test edi, edi
je 0x405080
mov ecx, dword [esp + 0x44]
cmp edi, 1
lea edx, [ecx + edi*4 - 4]
cmove edx, ecx
mov edx, dword [edx]
jmp 0x403a0f
mov eax, 0xffffffff
jmp 0x404b0c
call sub.msvcrt.dll_strtoul
jmp 0x4039b6
lea eax, [esp + 0x9c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x98]
mov dword [esp], eax
call fcn.004058b0
test byte [esp + 0x28], 0x80
jne 0x404768
mov edx, dword [esp + 0x9c]
mov eax, dword [esp + 0x98]
cmp edx, eax
je 0x402c72
mov edi, dword [esp + 0x38]
test edi, edi
je 0x4050db
mov esi, dword [esp + 0x44]
cmp edi, 1
lea ecx, [esi + edi*4 - 4]
cmove ecx, esi
mov ecx, dword [ecx]
cmp dword [esp + 0x68], 0x2d
je 0x404bdd
fstp xword [ecx]
jmp 0x404461
fchs
fstp xword [ecx]
jmp 0x404461
mov eax, dword [esp + 0x48]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x48], eax
mov dword [esp + 0x24], ecx
jmp 0x403ce2
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ebp, ebx
mov dword [esp], 1
mov eax, ebp
mov dword [esp + 0x58], edi
mov ebx, dword [esp + 0x54]
call fcn.00402830
jmp 0x404889
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ebp, ebx
mov dword [esp], 1
mov eax, ebp
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x54]
call fcn.00402830
jmp 0x40484e
mov edi, dword [esp + 0x2c]
jmp 0x403f99
mov eax, dword [esp + 0x48]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x48], eax
mov dword [esp + 0x24], ecx
jmp 0x402e6b
mov eax, dword [esp + 0x48]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x48], eax
mov dword [esp + 0x58], ecx
jmp 0x403c48
mov eax, dword [esp + 0x48]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], ecx
jmp 0x403c80
mov eax, dword [esp + 0x48]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x48], eax
mov dword [esp + 0x24], ecx
jmp 0x403439
mov eax, dword [esp + 0x48]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x48], eax
mov dword [esp + 0x58], ecx
jmp 0x40301f
mov eax, dword [esp + 0x48]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x48], eax
mov dword [esp + 0x24], ecx
jmp 0x40327f
mov eax, dword [esp + 0x48]
mov edi, dword [eax]
add eax, 4
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edi
jmp 0x403cb1
mov ecx, dword [esp + 0x48]
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x48], ecx
jmp 0x402fac
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x70]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov eax, ebp
mov dword [esp], 0
call fcn.00402830
jmp 0x404397
mov dword [esp], eax
call sub.msvcrt.dll_tolower
cmp eax, 0x6e
je 0x405317
cmp eax, 0x69
jne 0x403620
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x34], eax
mov edx, eax
xor eax, eax
call fcn.00402680
mov ecx, ebp
mov dword [esp + 0x98], eax
mov byte [eax], cl
mov edi, 1
mov ebp, ebx
jmp 0x404d7a
test esi, esi
je case.0x402c49.1
mov edi, edx
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebx, eax
je case.0x402c49.1
mov dword [esp], eax
call sub.msvcrt.dll_tolower
movsx edx, byte [edi + 0x4104c0]
cmp eax, edx
jne case.0x402c49.1
mov edx, dword [esp + 0x34]
xor eax, eax
mov ecx, dword [esp + 0x98]
test esi, esi
setg al
sub esi, eax
mov eax, edi
call fcn.00402680
lea edx, [edi + 1]
cmp byte [edx + 0x4104c0], 0
mov dword [esp + 0x98], eax
mov byte [eax + edi], bl
jne 0x404d70
mov eax, ebx
test esi, esi
mov ebx, ebp
mov dword [esp + 0x20], edx
mov ebp, eax
je 0x4043c0
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
je 0x4043c0
mov dword [esp], eax
call sub.msvcrt.dll_tolower
cmp eax, 0x69
je 0x4055af
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov eax, ebp
mov dword [esp], 0
call fcn.00402830
jmp 0x4043c0
test dword [esp + 0x28], 0x400
jne 0x404b67
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x40]
mov dword [esp + 0x24], 0
mov eax, dword [eax]
mov byte [eax + edi - 1], 0
mov eax, dword [esp + 0x3c]
add eax, 1
jmp 0x404b0c
test byte [esp + 0x28], 4
je 0x4050f6
mov edi, dword [esp + 0x38]
test edi, edi
jne 0x4052b0
mov edi, dword [esp + 0x48]
mov edx, dword [edi]
lea ecx, [edi + 4]
mov dword [esp + 0x48], ecx
mov dword [edx], eax
jmp 0x403a18
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x405036
mov edi, dword [esp + 0x44]
cmp ecx, 1
lea eax, [edi + ecx*4 - 4]
cmove eax, edi
mov eax, dword [eax]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x58]
test eax, eax
jne 0x40315c
jmp case.0x402c49.1
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x34], eax
mov edx, eax
xor eax, eax
call fcn.00402680
mov ecx, ebp
test esi, esi
mov dword [esp + 0x98], eax
mov byte [eax], cl
jne 0x404d5e
jmp case.0x402c49.1
test ecx, ecx
je 0x405149
mov edi, dword [esp + 0x44]
cmp ecx, 1
lea eax, [edi + ecx*4 - 4]
cmove eax, edi
mov eax, dword [eax]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x40315c
jmp case.0x402c49.1
test byte [esp + 0x28], 2
je 0x4051da
mov edi, dword [esp + 0x38]
test edi, edi
je 0x4052c7
mov ecx, dword [esp + 0x44]
cmp edi, 1
lea eax, [ecx + edi*4 - 4]
cmove eax, ecx
mov eax, dword [eax]
mov edx, dword [esp + 0x90]
mov esi, ebx
mov word [eax], dx
jmp 0x402965
test byte [esp + 0x28], 4
je 0x40521f
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x405243
mov edi, dword [esp + 0x44]
cmp ecx, 1
lea edx, [edi + ecx*4 - 4]
cmove edx, edi
mov edx, dword [edx]
mov dword [edx], eax
jmp 0x403a18
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x34], eax
mov edx, eax
xor eax, eax
call fcn.00402680
mov ecx, ebp
test esi, esi
mov dword [esp + 0x98], eax
mov byte [eax], cl
je case.0x402c49.1
mov edi, 1
mov ebp, ebx
jmp 0x404fc7
test esi, esi
je case.0x402c49.1
mov edi, edx
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebx, eax
je case.0x402c49.1
mov dword [esp], eax
call sub.msvcrt.dll_tolower
movsx edx, byte [edi + 0x4104bc]
cmp eax, edx
jne case.0x402c49.1
mov edx, dword [esp + 0x34]
xor eax, eax
mov ecx, dword [esp + 0x98]
test esi, esi
setg al
sub esi, eax
mov eax, edi
call fcn.00402680
lea edx, [edi + 1]
cmp byte [edx + 0x4104bc], 0
mov dword [esp + 0x98], eax
mov byte [eax + edi], bl
jne 0x404fbd
mov eax, ebx
mov dword [esp + 0x20], edx
mov ebx, ebp
mov ebp, eax
jmp 0x4043c0
mov eax, dword [esp + 0x48]
mov edi, dword [eax]
add eax, 4
mov dword [esp + 0x48], eax
mov dword [esp + 0x58], edi
jmp 0x404eac
test dword [esp + 0x28], 0x400
jne 0x404b67
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x40]
xor ebp, ebp
mov eax, dword [eax]
mov word [eax + edi*2 - 2], bp
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x24], 0
add eax, 1
jmp 0x404b0c
mov edi, dword [esp + 0x48]
lea ecx, [edi + 4]
mov edx, dword [edi]
mov dword [esp + 0x48], ecx
jmp 0x403a0f
mov dword [esp + 0x34], ebx
mov ebp, eax
mov ebx, dword [esp + 0x64]
jmp 0x4037f2
mov eax, dword [esp + 0x48]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x48], eax
mov dword [esp + 0x24], ecx
jmp 0x403b92
mov ecx, dword [esp + 0x48]
lea edi, [ecx + 4]
mov edx, dword [ecx]
mov dword [esp + 0x48], edi
jmp 0x403a0f
mov edi, dword [esp + 0x48]
mov ecx, dword [edi]
add edi, 4
mov dword [esp + 0x48], edi
jmp 0x404450
mov edi, dword [esp + 0x48]
mov ecx, dword [edi]
add edi, 4
mov dword [esp + 0x48], edi
jmp 0x404bcf
mov edi, dword [esp + 0x50]
jmp 0x40371d
test byte [esp + 0x28], 2
je 0x405354
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x405342
mov edi, dword [esp + 0x44]
cmp ecx, 1
lea edx, [edi + ecx*4 - 4]
cmove edx, edi
mov edx, dword [edx]
mov word [edx], ax
jmp 0x403a18
mov edi, dword [esp + 0x48]
mov ecx, dword [edi]
add edi, 4
mov dword [esp + 0x48], edi
jmp 0x404acd
mov ecx, dword [esp + 0x48]
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x48], ecx
jmp 0x404a1d
mov eax, dword [esp + 0x48]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], ecx
jmp 0x404f0f
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0x98]
mov edx, eax
mov dword [esp + 0x34], eax
xor eax, eax
call fcn.00402680
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x98], eax
mov byte [eax], 0x30
mov eax, dword [esp + 0x18]
call fcn.004027a0
test esi, esi
mov ebp, eax
jle 0x4053c4
mov edi, esi
sub edi, 1
jne 0x405597
xor esi, esi
mov dword [esp + 0x20], 1
jmp 0x40363a
mov dword [esp + 0x34], ebx
mov ebp, eax
mov ebx, dword [esp + 0x64]
jmp 0x4037fa
mov eax, dword [esp + 0x48]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x48], eax
mov dword [esp + 0x24], ecx
jmp 0x4030fb
mov eax, dword [esp + 0x28]
and eax, 1
mov dword [esp + 0x20], eax
je 0x4052eb
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x4052d9
mov edi, dword [esp + 0x44]
cmp ecx, 1
lea eax, [edi + ecx*4 - 4]
cmove eax, edi
mov eax, dword [eax]
mov edx, dword [esp + 0x90]
mov dword [esp + 0x20], 0
mov esi, ebx
mov byte [eax], dl
jmp 0x402965
test byte [esp + 0x28], 2
je 0x405269
mov edi, dword [esp + 0x38]
test edi, edi
je 0x405257
mov ecx, dword [esp + 0x44]
cmp edi, 1
lea edx, [ecx + edi*4 - 4]
cmove edx, ecx
mov edx, dword [edx]
jmp 0x40511d
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx]
add ecx, 4
mov dword [esp + 0x48], ecx
mov dword [edx], eax
jmp 0x403a18
mov edi, dword [esp + 0x48]
lea ecx, [edi + 4]
mov edx, dword [edi]
mov dword [esp + 0x48], ecx
jmp 0x40511d
test byte [esp + 0x28], 1
je 0x405293
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x405583
mov edi, dword [esp + 0x44]
cmp ecx, 1
lea edx, [edi + ecx*4 - 4]
cmove edx, edi
mov edx, dword [edx]
mov byte [edx], al
jmp 0x403a18
mov edi, dword [esp + 0x38]
test edi, edi
jne 0x4052b0
mov edi, dword [esp + 0x48]
mov edx, dword [edi]
add edi, 4
mov dword [esp + 0x48], edi
mov dword [edx], eax
jmp 0x403a18
mov ecx, dword [esp + 0x44]
cmp edi, 1
lea edx, [ecx + edi*4 - 4]
cmove edx, ecx
mov edx, dword [edx]
mov dword [edx], eax
jmp 0x403a18
mov edi, dword [esp + 0x48]
lea ecx, [edi + 4]
mov eax, dword [edi]
mov dword [esp + 0x48], ecx
jmp 0x404f47
mov ecx, dword [esp + 0x48]
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x48], ecx
jmp 0x405207
mov edi, dword [esp + 0x38]
test edi, edi
je 0x40547f
mov ecx, dword [esp + 0x44]
cmp edi, 1
lea eax, [ecx + edi*4 - 4]
cmove eax, ecx
mov eax, dword [eax]
mov edx, dword [esp + 0x90]
mov esi, ebx
mov dword [eax], edx
jmp 0x402965
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x34], eax
mov edx, eax
xor eax, eax
call fcn.00402680
mov ecx, ebp
mov dword [esp + 0x98], eax
mov byte [eax], cl
jmp 0x404fb4
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx]
add ecx, 4
mov dword [esp + 0x48], ecx
jmp 0x40511d
test byte [esp + 0x28], 1
je 0x405515
mov edi, dword [esp + 0x38]
test edi, edi
je 0x405535
mov ecx, dword [esp + 0x44]
cmp edi, 1
lea edx, [ecx + edi*4 - 4]
cmove edx, ecx
mov edx, dword [edx]
mov byte [edx], al
jmp 0x403a18
mov eax, dword [esp + 0x2c]
jmp 0x404035
mov eax, dword [esp + 0x2c]
xor edx, edx
jmp 0x40377b
test esi, esi
setne al
cmp ebp, 0xffffffff
setne dl
and eax, edx
jmp 0x4049e3
test dword [esp + 0x30], 0xffffffef
je 0x405425
cmp ebp, 0xffffffff
setne al
test esi, esi
setne dl
and eax, edx
jmp 0x4049e3
mov dword [esp], eax
call sub.msvcrt.dll_tolower
cmp eax, 0x78
jne 0x4051a8
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x34]
mov eax, 1
call fcn.00402680
mov ecx, ebp
mov dword [esp + 0x98], eax
mov edx, dword [esp + 0x1c]
mov byte [eax + 1], cl
mov eax, dword [esp + 0x28]
and ah, 0xfe
or eax, 0x40
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
mov byte [esp + 0x60], 0x70
mov ebp, eax
mov dword [esp + 0x20], 2
jmp 0x40363a
xor eax, eax
test esi, esi
mov edx, dword [esp + 0x1c]
setg al
sub esi, eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
test esi, esi
mov ebp, eax
mov dword [esp + 0x30], 0x10
setne al
cmp ebp, 0xffffffff
setne dl
and eax, edx
jmp 0x4049e3
mov ecx, dword [esp + 0x3c]
mov eax, 0xffffffff
mov edi, eax
test ecx, ecx
cmovne edi, ecx
jmp 0x402b1b
mov edi, dword [esp + 0x64]
mov ebx, dword [esp + 0x70]
mov ebp, eax
mov dword [esp + 0x20], edi
jmp 0x404d03
mov edi, dword [esp + 0x48]
lea ecx, [edi + 4]
mov eax, dword [edi]
mov dword [esp + 0x48], ecx
jmp 0x405307
mov eax, dword [esp + 0x3c]
test eax, eax
cmove eax, dword [esp + 0x68]
mov edi, eax
jmp 0x402b1b
mov eax, dword [esp + 0x40]
mov ebx, edx
add eax, 1
mov dword [esp + 0x4c], eax
jmp 0x4054c6
mov eax, dword [esp + 0x4c]
cmp ebx, eax
jbe 0x40504c
mov ecx, dword [esp + 0x24]
mov ebx, eax
mov ecx, dword [ecx]
lea eax, [ebx + ebx]
mov dword [esp], ecx
mov dword [esp + 0x54], edx
mov dword [esp + 4], eax
call sub.msvcrt.dll_realloc
test eax, eax
mov edx, dword [esp + 0x54]
je 0x4054b2
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x40], ebx
mov dword [ecx], eax
add eax, edx
mov dword [esp + 0x4c], eax
jmp 0x4046f5
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov eax, ebp
mov dword [esp], 1
mov ebx, dword [esp + 0x34]
call fcn.00402830
jmp 0x40471e
mov ecx, dword [esp + 0x38]
test ecx, ecx
jne 0x404f6f
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx]
lea edi, [ecx + 4]
mov dword [esp + 0x48], edi
mov dword [edx], eax
jmp 0x403a18
mov edi, dword [esp + 0x48]
mov edx, dword [edi]
lea ecx, [edi + 4]
mov dword [esp + 0x48], ecx
mov byte [edx], al
jmp 0x403a18
test dword [esp + 0x28], 0x400
mov eax, 0xffffffff
cmove eax, dword [esp + 0x3c]
mov edi, eax
jmp 0x402b1b
lea eax, [esp + 0x98]
lea edx, [esp + 0x8c]
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x3c]
call fcn.004026f0
jmp 0x402c92
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx]
add ecx, 4
mov dword [esp + 0x48], ecx
mov byte [edx], al
jmp 0x403a18
mov dword [esp], eax
call sub.msvcrt.dll_tolower
cmp eax, 0x78
je 0x40567d
mov esi, edi
jmp 0x4051a8
test esi, esi
jle 0x4056d0
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x34]
sub esi, 1
mov eax, dword [esp + 0x20]
call fcn.00402680
lea ecx, [edi + 2]
mov edi, dword [esp + 0x20]
test esi, esi
mov dword [esp + 0x98], eax
mov dword [esp + 0x54], ecx
mov ecx, ebp
mov byte [eax + edi], cl
je case.0x402c49.1
mov edi, 0x4104b7
jmp 0x405659
mov dword [esp], eax
call sub.msvcrt.dll_tolower
movsx edx, byte [edi]
cmp eax, edx
jne case.0x402c49.1
xor eax, eax
test esi, esi
mov ecx, dword [esp + 0x98]
setg al
mov edx, dword [esp + 0x34]
add edi, 1
sub esi, eax
mov eax, dword [esp + 0x54]
call fcn.00402680
mov ecx, dword [esp + 0x54]
cmp byte [edi], 0
mov dword [esp + 0x98], eax
lea edx, [ecx + 1]
mov dword [esp + 0x20], edx
mov edx, ecx
mov ecx, ebp
mov byte [eax + edx], cl
je 0x4043c0
test esi, esi
je case.0x402c49.1
mov eax, dword [esp + 0x20]
mov dword [esp + 0x54], eax
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
call fcn.004027a0
cmp eax, 0xffffffff
mov ebp, eax
jne 0x4055f4
jmp case.0x402c49.1
mov ebp, ebx
mov ebx, dword [esp + 0x5c]
jmp 0x4040c8
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x34]
mov eax, 1
sub esi, 2
call fcn.00402680
mov ecx, ebp
mov dword [esp + 0x98], eax
mov edx, dword [esp + 0x1c]
mov byte [eax + 1], cl
mov eax, dword [esp + 0x28]
and ah, 0xfe
or eax, 0x40
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
call fcn.004027a0
mov byte [esp + 0x60], 0x70
mov ebp, eax
mov dword [esp + 0x20], 2
jmp 0x40363a
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x20]
call fcn.00402680
lea ecx, [edi + 2]
mov edi, dword [esp + 0x20]
mov dword [esp + 0x98], eax
mov dword [esp + 0x54], ecx
mov ecx, ebp
mov byte [eax + edi], cl
jmp 0x4055ed