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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x224
mov eax, dword [0x48500c]
xor eax, esp
mov dword [esp + 0x220], eax
mov dword [esp + 0x34], ecx
mov ecx, dword [ebp + 8]
push ebx
push esi
push edi
movsx eax, byte [ecx]
xor esi, esi
mov dword [esp + 0x60], edx
xor edi, edi
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], edx
test eax, eax
je 0x405190
movsd xmm1, qword [0x47f090]
xorps xmm0, xmm0
movsd xmm2, qword [0x47f590]
movsd xmm4, qword [0x47f088]
movsd xmm7, qword [0x47f110]
movsd xmm5, qword [0x47f0e0]
movsd xmm6, qword [0x47f078]
movsd xmm3, qword [0x47f0a8]
movsd qword [esp + 0xb0], xmm1
movsd xmm1, qword [0x47f070]
movsd qword [esp + 0xb8], xmm1
movsd xmm1, qword [0x47f098]
mov dword [esp + 0x2c], 1
mov dword [esp + 0x68], 0x154
mov dword [esp + 0x64], 0x136
mov dword [esp + 0x6c], 0xa5
mov dword [esp + 0x5c], 0x15e
mov dword [esp + 0x54], 0xfffffea2
mov dword [esp + 0x58], 0x64
movsd qword [esp + 0xa0], xmm2
movsd qword [esp + 0x70], xmm0
movsd qword [esp + 0x80], xmm4
movsd qword [esp + 0x98], xmm7
movsd qword [esp + 0x88], xmm5
movsd qword [esp + 0x90], xmm6
movsd qword [esp + 0x78], xmm3
movsd qword [esp + 0xc0], xmm1
cmp eax, 0x25
je 0x4045e0
mov edx, dword [esp + 0x1c]
mov edi, ecx
mov ecx, dword [esp + 0x2c]
inc edx
mov dword [esp + 0x1c], edx
movsx eax, byte [edx]
mov dword [esp + 0x48], eax
cmp eax, 0x25
je 0x40458b
test eax, eax
je 0x404587
inc ecx
inc edx
movsx eax, byte [edx]
mov dword [esp + 0x48], eax
cmp eax, 0x25
jne 0x404575
mov dword [esp + 0x1c], edx
push ecx
mov ecx, dword [esp + 0x44]
mov edx, edi
call fcn.004051ec
cmp dword [esp + 0x4c], 0
pop ecx
je 0x405190
movsd xmm3, qword [esp + 0x78]
movsd xmm4, qword [esp + 0x80]
movsd xmm5, qword [esp + 0x88]
movsd xmm6, qword [esp + 0x90]
movsd xmm0, qword [esp + 0x70]
movsd xmm7, qword [esp + 0x98]
movsd xmm2, qword [esp + 0xa0]
mov ecx, dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x1c], ecx
movsx ecx, byte [ecx]
test ecx, ecx
je 0x40517d
xor edx, edx
mov byte [esp + 0x3b], dl
mov byte [esp + 0x3a], dl
mov byte [esp + 0x25], dl
mov byte [esp + 0x15], dl
mov byte [esp + 0x17], dl
mov byte [esp + 0x50], dl
mov edx, dword [esp + 0x1c]
mov eax, ecx
sub eax, 0x20
je 0x404662
sub eax, 1
je 0x404658
dec eax
sub eax, 1
je 0x40464e
sub eax, 8
je 0x404644
dec eax
sub eax, 1
je 0x40463a
sub eax, 3
jne 0x404672
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x3b], al
jmp 0x40466a
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x50], al
jmp 0x40466a
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x17], al
jmp 0x40466a
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x25], al
jmp 0x40466a
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x3a], al
jmp 0x40466a
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x15], al
inc edx
movsx ecx, byte [edx]
test ecx, ecx
jne 0x40460e
and dword [esp + 0x20], 0
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x18]
cmp ecx, 0x2a
jne 0x4046b6
mov eax, dword [edx]
add edx, 4
mov ecx, dword [esp + 0x50]
test eax, eax
movzx ecx, cl
cmovs ecx, dword [esp + 0x2c]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], edx
inc ecx
mov edx, eax
mov dword [esp + 0x1c], ecx
neg edx
test eax, eax
movsx ecx, byte [ecx]
cmovns edx, eax
jmp 0x4046dd
cmp ecx, 0x30
jl 0x4046f7
mov edx, dword [esp + 0x20]
cmp ecx, 0x39
ja 0x4046dd
imul eax, edx, 0xa
lea edx, [ecx - 0x30]
add edx, eax
mov eax, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x1c], eax
movsx ecx, byte [eax]
cmp ecx, 0x30
jge 0x4046bf
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
cmp eax, 0x154
mov edx, dword [esp + 0x18]
cmovg eax, dword [esp + 0x68]
mov dword [esp + 0x20], eax
cmp ecx, 0x2e
jne 0x404790
mov ecx, dword [esp + 0x1c]
xor eax, eax
inc ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x1c], ecx
movsx ecx, byte [ecx]
cmp ecx, 0x2a
jne 0x404738
mov eax, dword [esp + 0x1c]
add edx, 4
inc eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
movsx ecx, byte [eax]
mov eax, dword [edx - 4]
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x28], eax
jmp 0x404795
cmp ecx, 0x30
jl 0x404795
cmp ecx, 0x39
ja 0x404795
imul eax, eax, 0xa
add ecx, 0xffffffd0
add eax, ecx
mov ecx, dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x1c], ecx
movsx ecx, byte [ecx]
cmp ecx, 0x30
jge 0x40473d
xor al, al
mov byte [esp + 0x26], al
mov byte [esp + 0x27], al
xor eax, eax
xor edx, edx
mov dword [esp + 0x3c], eax
movsx eax, byte [edx + 0x47d908]
cmp ecx, eax
je 0x4047cc
inc dword [esp + 0x3c]
add edx, 6
cmp edx, 0x8a
jb 0x404771
jmp 0x405190
or dword [esp + 0x28], 0xffffffff
mov edx, dword [esp + 0x1c]
cmp ecx, 0x6c
jne 0x40475f
mov al, byte [esp + 0x2c]
mov byte [esp + 0x27], al
mov eax, edx
inc eax
mov dword [esp + 0x1c], eax
mov al, byte [eax]
cmp al, cl
jne 0x4047be
lea ecx, [edx + 2]
mov dword [esp + 0x1c], ecx
mov cl, byte [ecx]
jmp 0x4047c0
mov cl, al
sete al
movsx ecx, cl
mov byte [esp + 0x26], al
jmp 0x404769
imul edx, dword [esp + 0x3c], 6
add edx, 0x47d908
cmp dword [esp + 0x60], 0
mov dword [esp + 0x3c], edx
jne 0x4047ec
test byte [edx + 2], 2
jne 0x405190
mov al, byte [edx + 3]
xor ecx, ecx
mov byte [esp + 0x16], al
mov dword [esp + 0x30], ecx
test edx, edx
je 0x405190
mov edx, dword [esp + 0x28]
cmp edx, 0x136
jle 0x404822
mov ecx, dword [esp + 0x3c]
test byte [ecx + 2], 4
mov ecx, dword [esp + 0x30]
cmove edx, dword [esp + 0x64]
mov dword [esp + 0x28], edx
movzx eax, al
dec eax
cmp eax, 0x10
ja case.default.0x40482f
jmp dword [eax*4 + 0x4051a8]
mov cl, byte [esp + 0x2c]
xor al, al
jmp 0x404846
mov al, byte [esp + 0x26]
mov cl, byte [esp + 0x27]
mov edx, dword [esp + 0x3c]
test byte [edx + 2], 1
je 0x4048ab
mov edi, dword [esp + 0x18]
test al, al
je 0x404862
mov ecx, dword [edi]
add edi, 8
mov esi, dword [edi - 4]
jmp 0x404874
mov eax, dword [edi]
add edi, 4
cdq
test cl, cl
mov dword [esp + 0x18], edi
mov esi, edx
mov ecx, eax
jne 0x404878
mov dword [esp + 0x18], edi
test esi, esi
jg 0x40488d
jl 0x404882
test ecx, ecx
jae 0x40488d
neg ecx
mov dl, 0x2d
adc esi, 0
neg esi
jmp 0x4048d3
cmp byte [esp + 0x17], 0
mov dword [esp + 0x30], ecx
je 0x40489c
mov dl, 0x2b
jmp 0x4048d7
cmp byte [esp + 0x15], 0
sete dl
dec dl
and dl, 0x20
jmp 0x4048d7
test al, al
mov eax, dword [esp + 0x18]
je 0x4048bd
mov ecx, dword [eax]
add eax, 8
mov esi, dword [eax - 4]
jmp 0x4048cd
add eax, 4
xor esi, esi
test cl, cl
mov dword [esp + 0x18], eax
mov ecx, dword [eax - 4]
jne 0x4048d1
mov dword [esp + 0x18], eax
xor dl, dl
mov dword [esp + 0x30], ecx
mov eax, ecx
mov byte [esp + 0x15], dl
or eax, esi
jne 0x4048e5
mov byte [esp + 0x25], al
cmp byte [esp + 0x3b], 0
je 0x40490a
mov ecx, dword [esp + 0x20]
xor eax, eax
test dl, dl
setne al
sub ecx, eax
mov eax, dword [esp + 0x28]
cmp eax, ecx
cmovl eax, ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], eax
cmp byte [esp + 0x16], 0x11
lea edi, [esp + 0x225]
jne 0x404976
push 0
push 0xa
pop eax
push eax
push esi
push ecx
call fcn.0046c780
mov edi, eax
cmp edi, 4
jge 0x404951
push 0
push 0xa
pop eax
push eax
push esi
push dword [esp + 0x3c]
call fcn.0046bc90
push 0
push 0xa
push edx
push eax
call fcn.0046c780
cmp eax, dword [esp + 0x2c]
jne 0x404953
test edx, edx
jne 0x404953
xor edi, edi
mov al, byte [edi*2 + 0x47b984]
mov byte [esp + 0x223], al
mov al, byte [edi*2 + 0x47b985]
lea edi, [esp + 0x223]
mov byte [esp + 0x224], al
mov ecx, dword [esp + 0x3c]
movzx eax, byte [ecx + 4]
add eax, str.0123456789ABCDEF0123456789abcdef
mov dword [esp + 0x4c], eax
movzx eax, byte [ecx + 1]
cdq
mov ecx, eax
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x30]
mov dword [esp + 0x48], ecx
push ebx
push edx
push ecx
push esi
push eax
dec edi
call fcn.0046be50
mov dword [esp + 0x38], ebx
pop ebx
mov dword [esp + 0x30], eax
mov esi, edx
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x44]
mov al, byte [ecx + eax]
mov ecx, dword [esp + 0x48]
mov byte [edi], al
mov eax, dword [esp + 0x30]
test esi, esi
ja 0x40499a
jb 0x4049cf
test eax, eax
jne 0x40499a
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0xc8]
sub eax, ecx
add eax, 0xfffffea3
add eax, edi
jmp 0x4049ea
dec edi
dec eax
mov byte [edi], 0x30
test eax, eax
jg 0x4049e5
mov al, byte [esp + 0x15]
test al, al
je 0x4049f9
dec edi
mov byte [edi], al
cmp byte [esp + 0x25], 0
je 0x404a25
mov eax, dword [esp + 0x3c]
mov al, byte [eax + 5]
test al, al
je 0x404a25
movzx eax, al
add eax, 0x47b908
mov cl, byte [eax]
cmp byte [edi], cl
je 0x404a25
jmp 0x404a21
dec edi
inc eax
mov byte [edi], cl
mov cl, byte [eax]
test cl, cl
jne 0x404a1b
lea esi, [esp + 0x225]
sub esi, edi
and dword [esp + 0x30], 0
mov eax, dword [esp + 0x20]
cmp byte [esp + 0x50], 0
jne 0x404a4f
mov edx, eax
sub edx, esi
test edx, edx
jle 0x404a4f
mov ecx, dword [esp + 0x40]
call fcn.004043f3
test esi, esi
jle 0x404a60
mov ecx, dword [esp + 0x40]
mov edx, edi
push esi
call fcn.004051ec
pop ecx
cmp byte [esp + 0x50], 0
je 0x404a7c
mov eax, dword [esp + 0x20]
sub eax, esi
test eax, eax
jle 0x404a7c
mov ecx, dword [esp + 0x40]
mov edx, eax
call fcn.004043f3
mov eax, dword [esp + 0x30]
test eax, eax
je 0x404a8b
push eax
call fcn.00403f89
pop ecx
mov ecx, dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x1c], ecx
movsx eax, byte [ecx]
test eax, eax
je 0x405190
movsd xmm3, qword [esp + 0x78]
movsd xmm4, qword [esp + 0x80]
movsd xmm5, qword [esp + 0x88]
movsd xmm6, qword [esp + 0x90]
movsd xmm0, qword [esp + 0x70]
movsd xmm7, qword [esp + 0x98]
movsd xmm2, qword [esp + 0xa0]
jmp 0x404551
mov ecx, dword [esp + 0x18]
add ecx, 8
mov dword [esp + 0x18], ecx
movsd xmm1, qword [ecx - 8]
test edx, edx
jns 0x404af6
push 6
pop edx
jmp 0x404aff
cmp edx, dword [esp + 0x6c]
cmovg edx, dword [esp + 0x6c]
comisd xmm0, xmm1
mov dword [esp + 0x28], edx
jbe 0x404b10
xorps xmm1, xmm2
mov ch, 0x2d
jmp 0x404b28
cmp byte [esp + 0x17], 0
je 0x404b1b
mov ch, 0x2b
jmp 0x404b28
cmp byte [esp + 0x15], 0
sete ch
dec ch
and ch, 0x20
mov cl, byte [esp + 0x16]
mov byte [esp + 0x15], ch
cmp cl, 4
jne 0x404b3e
test edx, edx
jle 0x404b3e
dec edx
mov dword [esp + 0x28], edx
movsd xmm2, qword [esp + 0xb0]
mov eax, edx
mov byte [esp + 0x17], cl
test edx, edx
jle 0x404b6a
mov cl, byte [esp + 0x16]
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x3c], esi
mov byte [esp + 0x17], cl
dec eax
mulsd xmm2, xmm4
test eax, eax
jg 0x404b61
cmp cl, 2
jne 0x404b7c
movaps xmm0, xmm2
addsd xmm1, xmm0
movsd xmm0, qword [esp + 0x70]
xor edi, edi
ucomisd xmm1, xmm1
mov dword [esp + 0x30], edi
lahf
test ah, 0x44
jnp 0x404b99
push 3
mov edi, 0x47a7ac
pop esi
jmp 0x404a2e
comisd xmm1, xmm0
jbe 0x404c77
comisd xmm1, xmm7
mov eax, dword [esp + 0x5c]
jb 0x404bcb
movsd xmm0, qword [esp + 0xb8]
cmp edi, eax
jg 0x404bc7
mulsd xmm1, xmm0
add edi, 0x20
comisd xmm1, xmm7
jae 0x404bb6
mov dword [esp + 0x30], edi
comisd xmm1, xmm5
jb 0x404be6
cmp edi, eax
jg 0x404be2
mulsd xmm1, xmm6
add edi, 8
comisd xmm1, xmm5
jae 0x404bd1
mov dword [esp + 0x30], edi
comisd xmm1, xmm3
jb 0x404bff
cmp edi, eax
jg 0x404bfb
mulsd xmm1, xmm4
inc edi
comisd xmm1, xmm3
jae 0x404bec
mov dword [esp + 0x30], edi
comisd xmm6, xmm1
mov esi, dword [esp + 0x54]
jbe 0x404c1e
cmp edi, esi
jl 0x404c1a
mulsd xmm1, xmm5
sub edi, 8
comisd xmm6, xmm1
ja 0x404c09
mov dword [esp + 0x30], edi
movsd xmm0, qword [esp + 0xc0]
comisd xmm0, xmm1
jbe 0x404c40
cmp edi, esi
jl 0x404c3c
mulsd xmm1, xmm3
dec edi
comisd xmm0, xmm1
ja 0x404c2d
mov dword [esp + 0x30], edi
cmp edi, eax
jg 0x404c48
cmp edi, esi
jge 0x404c77
cmp ch, 0x2d
jne 0x404c54
mov edi, str._Inf
jmp 0x404c64
cmp ch, 0x2b
mov edi, str.Inf
mov eax, 0x47a7c0
cmovne edi, eax
mov esi, edi
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x404c69
sub esi, ecx
jmp 0x404a2e
cmp cl, 2
je 0x404cbb
addsd xmm1, xmm2
comisd xmm1, xmm3
jb 0x404c8f
inc edi
mulsd xmm1, xmm4
mov dword [esp + 0x30], edi
cmp cl, 4
jne 0x404cbb
mov ah, byte [esp + 0x25]
test ah, ah
sete byte [esp + 0x26]
cmp edi, 0xfffffffc
jl 0x404cb3
cmp edi, edx
jg 0x404cb3
sub edx, edi
add cl, 0xfe
mov dword [esp + 0x28], edx
jmp 0x404cb5
mov cl, 3
mov byte [esp + 0x17], cl
jmp 0x404cc4
mov ah, byte [esp + 0x25]
mov byte [esp + 0x26], 0
xor edx, edx
lea esi, [esp + 0xc8]
cmp cl, 3
movzx ecx, byte [esp + 0xc8]
cmovne edx, edi
and dword [esp + 0x44], 0
cmp dword [esp + 0x28], 0
setg al
or al, byte [esp + 0x3a]
or al, ah
cmp byte [esp + 0x15], 0
mov byte [esp + 0x27], al
movzx eax, byte [esp + 0x15]
cmovne ecx, eax
lea eax, [esp + 0xc9]
cmovne esi, eax
mov byte [esp + 0xc8], cl
mov ecx, dword [esp + 0x44]
test edx, edx
jns 0x404d1e
mov byte [esi], 0x30
inc esi
jmp 0x404d4a
mov eax, ecx
inc ecx
cmp eax, 0x10
jl 0x404d2b
push 0x30
pop eax
jmp 0x404d42
cvttsd2si eax, xmm1
movd xmm0, eax
add eax, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, xmm3
mov byte [esi], al
inc esi
sub edx, 1
jns 0x404d1e
mov al, byte [esp + 0x27]
test al, al
je 0x404d67
mov byte [esi], 0x2e
inc esi
jmp 0x404d67
cmp dword [esp + 0x28], 0
jle 0x404da4
mov byte [esi], 0x30
inc esi
dec dword [esp + 0x28]
add edx, 1
js 0x404d58
mov edx, dword [esp + 0x28]
test edx, edx
jle 0x404da4
dec edx
mov eax, ecx
inc ecx
cmp eax, 0x10
jl 0x404d82
push 0x30
pop eax
jmp 0x404d99
cvttsd2si eax, xmm1
movd xmm0, eax
add eax, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, xmm3
mov byte [esi], al
inc esi
test edx, edx
jg 0x404d74
mov al, byte [esp + 0x27]
cmp byte [esp + 0x26], 0
je 0x404dd5
test al, al
je 0x404dd5
jmp 0x404db6
mov esi, eax
mov byte [esi], 0
lea eax, [esi - 1]
cmp byte [eax], 0x30
je 0x404db1
cmp byte [esi - 1], 0x2e
jne 0x404dd5
cmp byte [esp + 0x3a], 0
je 0x404dd1
mov byte [esi], 0x30
inc esi
jmp 0x404dd5
dec esi
mov byte [esi], 0
cmp byte [esp + 0x16], 3
je 0x404de7
cmp byte [esp + 0x17], 3
jne 0x404e44
test edi, edi
je 0x404e44
mov eax, dword [esp + 0x3c]
lea edi, [esi + 2]
movzx eax, byte [eax + 4]
mov al, byte [eax + str.0123456789ABCDEF0123456789abcdef]
mov byte [esi], al
mov eax, dword [esp + 0x30]
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
cmp dword [esp + 0x30], 0
setl al
lea eax, [eax*2 + 0x2b]
mov byte [esi + 1], al
mov esi, edi
cmp ecx, dword [esp + 0x58]
jl 0x404e2f
mov eax, ecx
lea esi, [edi + 1]
cdq
idiv dword [esp + 0x58]
add al, 0x30
mov ecx, edx
mov byte [edi], al
mov eax, ecx
push 0xa
cdq
pop ecx
idiv ecx
add al, 0x30
add dl, 0x30
mov byte [esi], al
mov byte [esi + 1], dl
add esi, 2
lea eax, [esp + 0xc8]
mov byte [esi], 0
sub esi, eax
mov edi, eax
cmp byte [esp + 0x3b], 0
je 0x404ebd
and dword [esp + 0x30], 0
cmp byte [esp + 0x50], 0
jne 0x404a4f
and dword [esp + 0x30], 0
mov eax, dword [esp + 0x20]
cmp esi, eax
jge 0x404a3e
mov ecx, eax
mov edx, eax
sub ecx, esi
cmp eax, ecx
jl 0x404e97
mov esi, edi
sub esi, ecx
mov al, byte [esi + edx]
mov byte [esp + edx + 0xc8], al
dec edx
cmp edx, ecx
jge 0x404e88
xor eax, eax
cmp byte [esp + 0x15], al
setne al
test ecx, ecx
je 0x404eb9
push ecx
lea edx, [esp + 0xcc]
add eax, edx
push 0x30
push eax
call fcn.004510e0
add esp, 0xc
mov esi, dword [esp + 0x20]
xor eax, eax
mov dword [esp + 0x30], eax
jmp case.default.0x40482f
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x40]
add ecx, 4
mov dword [esp + 0x18], ecx
mov ecx, dword [ecx - 4]
mov eax, dword [eax + 8]
mov dword [ecx], eax
xor eax, eax
xor esi, esi
mov dword [esp + 0x20], eax
jmp 0x404a37
mov esi, dword [esp + 0x2c]
lea edi, [esp + 0xc8]
mov byte [esp + 0xc8], 0x25
jmp case.default.0x40482f
cmp byte [esp + 0x16], 9
jne 0x404f1b
mov ecx, dword [esp + 0x18]
add ecx, 4
mov dword [esp + 0x18], ecx
mov eax, dword [ecx - 4]
jmp 0x404f27
mov eax, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x1c], eax
movsx eax, byte [eax]
mov cl, al
mov byte [esp + 0xc8], cl
test edx, edx
js 0x404f57
cmp edx, dword [esp + 0x2c]
jle 0x404f53
lea eax, [edx - 1]
push eax
push ecx
lea eax, [esp + 0xd1]
push eax
call fcn.004510e0
mov edx, dword [esp + 0x34]
add esp, 0xc
mov esi, edx
jmp 0x404f5b
mov esi, dword [esp + 0x2c]
lea edi, [esp + 0xc8]
jmp case.default.0x40482f
mov eax, dword [esp + 0x18]
add eax, 4
mov dword [esp + 0x18], eax
mov edi, dword [eax - 4]
test edi, edi
jne 0x404f80
mov edi, 0x47a7c4
jmp 0x404f8c
cmp byte [esp + 0x16], 7
cmove ecx, edi
mov dword [esp + 0x30], ecx
mov esi, edi
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x404f91
sub esi, ecx
test edx, edx
js case.default.0x40482f
mov eax, dword [esp + 0x20]
cmp edx, esi
jge 0x404a37
mov esi, edx
jmp 0x404a37
mov dl, byte [esp + 0x16]
push 0x27
pop eax
push 0x22
cmp dl, 0x10
pop ecx
cmove eax, ecx
mov ecx, dword [esp + 0x18]
add ecx, 4
mov dword [esp + 0x48], eax
mov dword [esp + 0x18], ecx
mov edi, dword [ecx - 4]
mov ecx, edi
mov dword [esp + 0x30], edi
mov dword [esp + 0x44], edi
test edi, edi
jne 0x404ff9
cmp dl, 0xc
mov ecx, str.NULL
mov esi, str._NULL_
cmovne ecx, esi
mov dword [esp + 0x44], ecx
movsx esi, byte [ecx]
xor edx, edx
and dword [esp + 0x3c], edx
test esi, esi
je 0x405036
mov edi, dword [esp + 0x3c]
movzx eax, al
mov dword [esp + 0x4c], eax
mov al, byte [esp + 0x16]
mov byte [esp + 0x16], al
cmp esi, dword [esp + 0x4c]
lea eax, [edx + 1]
cmovne eax, edx
inc edi
mov edx, eax
movsx esi, byte [edi + ecx]
test esi, esi
jne 0x405019
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x30]
test edi, edi
je 0x405047
cmp byte [esp + 0x16], 0xc
jne 0x405047
mov eax, dword [esp + 0x2c]
jmp 0x405049
xor eax, eax
mov dword [esp + 0x28], eax
lea eax, [eax*2 + 1]
add eax, dword [esp + 0x3c]
add eax, edx
cmp eax, 0x15e
jle 0x40507c
push eax
call fcn.00403ec2
mov dword [esp + 0x34], eax
mov edi, eax
pop ecx
test eax, eax
je 0x405190
mov ecx, dword [esp + 0x44]
jmp 0x405089
xor eax, eax
lea edi, [esp + 0xc8]
mov dword [esp + 0x30], eax
mov edx, dword [esp + 0x28]
xor esi, esi
test edx, edx
je 0x40509d
mov eax, dword [esp + 0x48]
mov esi, dword [esp + 0x2c]
mov byte [edi], al
movsx eax, byte [ecx]
test eax, eax
je 0x4050c9
mov edx, dword [esp + 0x48]
movzx edx, dl
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x28]
mov byte [esi + edi], al
inc esi
cmp eax, dword [esp + 0x4c]
jne 0x4050c1
mov byte [esi + edi], al
inc esi
inc ecx
movsx eax, byte [ecx]
test eax, eax
jne 0x4050b3
test edx, edx
je 0x4050d5
mov eax, dword [esp + 0x48]
mov byte [esi + edi], al
inc esi
mov byte [esi + edi], 0
jmp case.default.0x40482f
mov eax, dword [esp + 0x18]
add eax, 4
mov dword [esp + 0x18], eax
mov eax, dword [eax - 4]
test eax, eax
je 0x404edf
mov edx, dword [eax]
test edx, edx
je 0x404edf
mov eax, dword [eax + 4]
mov ecx, dword [esp + 0x40]
shr eax, 1
push eax
call fcn.004051ec
pop ecx
jmp 0x404edf
mov ecx, dword [esp + 0x18]
lea eax, [ecx + 8]
imul esi, dword [eax - 4], 0x30
mov dword [esp + 0x44], eax
mov eax, dword [ecx]
mov dword [esp + 0x4c], eax
mov edx, dword [esi + eax + 8]
test edx, edx
je 0x405158
cmp byte [edx], 0
je 0x405158
mov ecx, dword [esp + 0x40]
push 0xffffffffffffffff
call fcn.004051ec
push dword [esp + 0x30]
mov ecx, dword [esp + 0x48]
mov edx, 0x47a7d8
call fcn.004051ec
mov eax, dword [esp + 0x54]
pop ecx
pop ecx
mov edx, dword [esi + eax + 0xc]
mov ecx, dword [esp + 0x40]
push 0xffffffffffffffff
call fcn.004051ec
pop ecx
mov ecx, dword [esp + 0x44]
xor eax, eax
mov dword [esp + 0x20], eax
xor esi, esi
mov dword [esp + 0x18], ecx
jmp 0x404a37
push dword [esp + 0x2c]
mov ecx, dword [esp + 0x44]
mov edx, 0x47a7a8
call fcn.004051ec
pop ecx
mov ecx, dword [esp + 0x22c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0044d024
mov esp, ebp
pop ebp
ret