Function at 0x4046c4
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 0x405016
movsd xmm1, qword [0x47dae8]
xorps xmm0, xmm0
movsd xmm2, qword [0x47e130]
movsd xmm4, qword [0x47dae0]
movsd xmm7, qword [0x47db68]
movsd xmm5, qword [0x47db38]
movsd xmm6, qword [0x47dad0]
movsd xmm3, qword [0x47db00]
movsd qword [esp + 0xb0], xmm1
movsd xmm1, qword [0x47dac8]
movsd qword [esp + 0xb8], xmm1
movsd xmm1, qword [0x47daf0]
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 0x40446d
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 0x404418
test eax, eax
je 0x404414
inc ecx
inc edx
movsx eax, byte [edx]
mov dword [esp + 0x48], eax
cmp eax, 0x25
jne 0x404402
mov dword [esp + 0x1c], edx
push ecx
mov ecx, dword [esp + 0x44]
mov edx, edi
call fcn.00405071
cmp dword [esp + 0x4c], 0
pop ecx
je 0x405016
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 0x405003
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 0x4044ef
sub eax, 1
je 0x4044e5
dec eax
sub eax, 1
je 0x4044db
sub eax, 8
je 0x4044d1
dec eax
sub eax, 1
je 0x4044c7
sub eax, 3
jne 0x4044ff
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x3b], al
jmp 0x4044f7
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x50], al
jmp 0x4044f7
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x17], al
jmp 0x4044f7
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x25], al
jmp 0x4044f7
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x3a], al
jmp 0x4044f7
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x15], al
inc edx
movsx ecx, byte [edx]
test ecx, ecx
jne 0x40449b
and dword [esp + 0x20], 0
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x18]
cmp ecx, 0x2a
jne 0x404543
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 0x40456a
cmp ecx, 0x30
jl 0x404584
mov edx, dword [esp + 0x20]
cmp ecx, 0x39
ja 0x40456a
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 0x40454c
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 0x4045e5
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 0x4045de
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 0x4045ea
cmp ecx, 0x39
ja 0x4045ea
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 0x4045c1
jmp 0x4045ea
or dword [esp + 0x28], 0xffffffff
mov edx, dword [esp + 0x1c]
cmp ecx, 0x6c
jne 0x404621
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 0x404613
lea ecx, [edx + 2]
mov dword [esp + 0x1c], ecx
mov cl, byte [ecx]
jmp 0x404615
mov cl, al
sete al
movsx ecx, cl
mov byte [esp + 0x26], al
jmp 0x40462b
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 + 0x47bfa8]
cmp ecx, eax
je 0x404652
inc dword [esp + 0x3c]
add edx, 6
cmp edx, 0x8a
jb 0x404633
jmp 0x405016
imul edx, dword [esp + 0x3c], 6
add edx, 0x47bfa8
cmp dword [esp + 0x60], 0
mov dword [esp + 0x3c], edx
jne 0x404672
test byte [edx + 2], 2
jne 0x405016
mov al, byte [edx + 3]
xor ecx, ecx
mov byte [esp + 0x16], al
mov dword [esp + 0x30], ecx
test edx, edx
je 0x405016
mov edx, dword [esp + 0x28]
cmp edx, 0x136
jle 0x4046a8
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.0x4046b5
jmp dword [eax*4 + 0x40502d]
mov cl, byte [esp + 0x2c]
xor al, al
jmp 0x4046cc
mov al, byte [esp + 0x26]
mov cl, byte [esp + 0x27]
mov edx, dword [esp + 0x3c]
test byte [edx + 2], 1
je 0x404731
mov edi, dword [esp + 0x18]
test al, al
je 0x4046e8
mov ecx, dword [edi]
add edi, 8
mov esi, dword [edi - 4]
jmp 0x4046fa
mov eax, dword [edi]
add edi, 4
cdq
test cl, cl
mov dword [esp + 0x18], edi
mov esi, edx
mov ecx, eax
jne 0x4046fe
mov dword [esp + 0x18], edi
test esi, esi
jg 0x404713
jl 0x404708
test ecx, ecx
jae 0x404713
neg ecx
mov dl, 0x2d
adc esi, 0
neg esi
jmp 0x404759
cmp byte [esp + 0x17], 0
mov dword [esp + 0x30], ecx
je 0x404722
mov dl, 0x2b
jmp 0x40475d
cmp byte [esp + 0x15], 0
sete dl
dec dl
and dl, 0x20
jmp 0x40475d
test al, al
mov eax, dword [esp + 0x18]
je 0x404743
mov ecx, dword [eax]
add eax, 8
mov esi, dword [eax - 4]
jmp 0x404753
add eax, 4
xor esi, esi
test cl, cl
mov dword [esp + 0x18], eax
mov ecx, dword [eax - 4]
jne 0x404757
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 0x40476b
mov byte [esp + 0x25], al
cmp byte [esp + 0x3b], 0
je 0x404790
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 0x4047fc
push 0
push 0xa
pop eax
push eax
push esi
push ecx
call fcn.0046dfd0
mov edi, eax
cmp edi, 4
jge 0x4047d7
push 0
push 0xa
pop eax
push eax
push esi
push dword [esp + 0x3c]
call fcn.0046df60
push 0
push 0xa
push edx
push eax
call fcn.0046dfd0
cmp eax, dword [esp + 0x2c]
jne 0x4047d9
test edx, edx
jne 0x4047d9
xor edi, edi
mov al, byte [edi*2 + 0x47a024]
mov byte [esp + 0x223], al
mov al, byte [edi*2 + 0x47a025]
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.0046c6b0
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 0x404820
jb 0x404855
test eax, eax
jne 0x404820
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0xc8]
sub eax, ecx
add eax, 0xfffffea3
add eax, edi
jmp 0x404870
dec edi
dec eax
mov byte [edi], 0x30
test eax, eax
jg 0x40486b
mov al, byte [esp + 0x15]
test al, al
je 0x40487f
dec edi
mov byte [edi], al
cmp byte [esp + 0x25], 0
je 0x4048ab
mov eax, dword [esp + 0x3c]
mov al, byte [eax + 5]
test al, al
je 0x4048ab
movzx eax, al
add eax, 0x479fa8
mov cl, byte [eax]
cmp byte [edi], cl
je 0x4048ab
jmp 0x4048a7
dec edi
inc eax
mov byte [edi], cl
mov cl, byte [eax]
test cl, cl
jne 0x4048a1
lea esi, [esp + 0x225]
sub esi, edi
and dword [esp + 0x30], 0
mov eax, dword [esp + 0x20]
cmp byte [esp + 0x50], 0
jne 0x4048d5
mov edx, eax
sub edx, esi
test edx, edx
jle 0x4048d5
mov ecx, dword [esp + 0x40]
call fcn.00404280
test esi, esi
jle 0x4048e6
mov ecx, dword [esp + 0x40]
mov edx, edi
push esi
call fcn.00405071
pop ecx
cmp byte [esp + 0x50], 0
je 0x404902
mov eax, dword [esp + 0x20]
sub eax, esi
test eax, eax
jle 0x404902
mov ecx, dword [esp + 0x40]
mov edx, eax
call fcn.00404280
mov eax, dword [esp + 0x30]
test eax, eax
je 0x404911
push eax
call fcn.00403e19
pop ecx
mov ecx, dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x1c], ecx
movsx eax, byte [ecx]
test eax, eax
je 0x405016
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 0x4043de
mov ecx, dword [esp + 0x18]
add ecx, 8
mov dword [esp + 0x18], ecx
movsd xmm1, qword [ecx - 8]
test edx, edx
jns 0x40497c
push 6
pop edx
jmp 0x404985
cmp edx, dword [esp + 0x6c]
cmovg edx, dword [esp + 0x6c]
comisd xmm0, xmm1
mov dword [esp + 0x28], edx
jbe 0x404996
xorps xmm1, xmm2
mov ch, 0x2d
jmp 0x4049ae
cmp byte [esp + 0x17], 0
je 0x4049a1
mov ch, 0x2b
jmp 0x4049ae
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 0x4049c4
test edx, edx
je 0x4049c4
dec edx
mov dword [esp + 0x28], edx
movsd xmm2, qword [esp + 0xb0]
mov eax, edx
mov byte [esp + 0x17], cl
test edx, edx
jle 0x4049f0
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 0x4049e7
cmp cl, 2
jne 0x404a02
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 0x404a1f
push 3
mov edi, 0x478e4c
pop esi
jmp 0x4048b4
comisd xmm1, xmm0
jbe 0x404afd
comisd xmm1, xmm7
mov eax, dword [esp + 0x5c]
jb 0x404a51
movsd xmm0, qword [esp + 0xb8]
cmp edi, eax
jg 0x404a4d
mulsd xmm1, xmm0
add edi, 0x20
comisd xmm1, xmm7
jae 0x404a3c
mov dword [esp + 0x30], edi
comisd xmm1, xmm5
jb 0x404a6c
cmp edi, eax
jg 0x404a68
mulsd xmm1, xmm6
add edi, 8
comisd xmm1, xmm5
jae 0x404a57
mov dword [esp + 0x30], edi
comisd xmm1, xmm3
jb 0x404a85
cmp edi, eax
jg 0x404a81
mulsd xmm1, xmm4
inc edi
comisd xmm1, xmm3
jae 0x404a72
mov dword [esp + 0x30], edi
comisd xmm6, xmm1
mov esi, dword [esp + 0x54]
jbe 0x404aa4
cmp edi, esi
jl 0x404aa0
mulsd xmm1, xmm5
sub edi, 8
comisd xmm6, xmm1
ja 0x404a8f
mov dword [esp + 0x30], edi
movsd xmm0, qword [esp + 0xc0]
comisd xmm0, xmm1
jbe 0x404ac6
cmp edi, esi
jl 0x404ac2
mulsd xmm1, xmm3
dec edi
comisd xmm0, xmm1
ja 0x404ab3
mov dword [esp + 0x30], edi
cmp edi, eax
jg 0x404ace
cmp edi, esi
jge 0x404afd
cmp ch, 0x2d
jne 0x404ada
mov edi, str._Inf
jmp 0x404aea
cmp ch, 0x2b
mov edi, str.Inf
mov eax, 0x478e60
cmovne edi, eax
mov esi, edi
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x404aef
sub esi, ecx
jmp 0x4048b4
cmp cl, 2
je 0x404b41
addsd xmm1, xmm2
comisd xmm1, xmm3
jb 0x404b15
inc edi
mulsd xmm1, xmm4
mov dword [esp + 0x30], edi
cmp cl, 4
jne 0x404b41
mov ah, byte [esp + 0x25]
test ah, ah
sete byte [esp + 0x26]
cmp edi, 0xfffffffc
jl 0x404b39
cmp edi, edx
jg 0x404b39
sub edx, edi
add cl, 0xfe
mov dword [esp + 0x28], edx
jmp 0x404b3b
mov cl, 3
mov byte [esp + 0x17], cl
jmp 0x404b4a
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 0x404ba4
mov byte [esi], 0x30
inc esi
jmp 0x404bd0
mov eax, ecx
inc ecx
cmp eax, 0x10
jl 0x404bb1
push 0x30
pop eax
jmp 0x404bc8
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 0x404ba4
mov al, byte [esp + 0x27]
test al, al
je 0x404bed
mov byte [esi], 0x2e
inc esi
jmp 0x404bed
cmp dword [esp + 0x28], 0
jle 0x404c2a
mov byte [esi], 0x30
inc esi
dec dword [esp + 0x28]
add edx, 1
js 0x404bde
mov edx, dword [esp + 0x28]
test edx, edx
jle 0x404c2a
dec edx
mov eax, ecx
inc ecx
cmp eax, 0x10
jl 0x404c08
push 0x30
pop eax
jmp 0x404c1f
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 0x404bfa
mov al, byte [esp + 0x27]
cmp byte [esp + 0x26], 0
je 0x404c5b
test al, al
je 0x404c5b
jmp 0x404c3c
mov esi, eax
mov byte [esi], 0
lea eax, [esi - 1]
cmp byte [eax], 0x30
je 0x404c37
cmp byte [esi - 1], 0x2e
jne 0x404c5b
cmp byte [esp + 0x3a], 0
je 0x404c57
mov byte [esi], 0x30
inc esi
jmp 0x404c5b
dec esi
mov byte [esi], 0
cmp byte [esp + 0x16], 3
je 0x404c6d
cmp byte [esp + 0x17], 3
jne 0x404cca
test edi, edi
je 0x404cca
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 0x404cb5
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 0x404d43
and dword [esp + 0x30], 0
cmp byte [esp + 0x50], 0
jne 0x4048d5
and dword [esp + 0x30], 0
mov eax, dword [esp + 0x20]
cmp esi, eax
jge 0x4048c4
mov ecx, eax
mov edx, eax
sub ecx, esi
cmp eax, ecx
jl 0x404d1d
mov esi, edi
sub esi, ecx
mov al, byte [esi + edx]
mov byte [esp + edx + 0xc8], al
dec edx
cmp edx, ecx
jge 0x404d0e
xor eax, eax
cmp byte [esp + 0x15], al
setne al
test ecx, ecx
je 0x404d3f
push ecx
lea edx, [esp + 0xcc]
add eax, edx
push 0x30
push eax
call fcn.00455b80
add esp, 0xc
mov esi, dword [esp + 0x20]
xor eax, eax
mov dword [esp + 0x30], eax
jmp case.default.0x4046b5
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 0x4048bd
mov esi, dword [esp + 0x2c]
lea edi, [esp + 0xc8]
mov byte [esp + 0xc8], 0x25
jmp case.default.0x4046b5
cmp byte [esp + 0x16], 9
jne 0x404da1
mov ecx, dword [esp + 0x18]
add ecx, 4
mov dword [esp + 0x18], ecx
mov eax, dword [ecx - 4]
jmp 0x404dad
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 0x404ddd
cmp edx, dword [esp + 0x2c]
jle 0x404dd9
lea eax, [edx - 1]
push eax
push ecx
lea eax, [esp + 0xd1]
push eax
call fcn.00455b80
mov edx, dword [esp + 0x34]
add esp, 0xc
mov esi, edx
jmp 0x404de1
mov esi, dword [esp + 0x2c]
lea edi, [esp + 0xc8]
jmp case.default.0x4046b5
mov eax, dword [esp + 0x18]
add eax, 4
mov dword [esp + 0x18], eax
mov edi, dword [eax - 4]
test edi, edi
jne 0x404e06
mov edi, 0x478e64
jmp 0x404e12
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 0x404e17
sub esi, ecx
test edx, edx
js case.default.0x4046b5
mov eax, dword [esp + 0x20]
cmp edx, esi
jge 0x4048bd
mov esi, edx
jmp 0x4048bd
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 0x404e7f
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 0x404ebc
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 0x404e9f
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x30]
test edi, edi
je 0x404ecd
cmp byte [esp + 0x16], 0xc
jne 0x404ecd
mov eax, dword [esp + 0x2c]
jmp 0x404ecf
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 0x404f02
push eax
call fcn.00403d52
mov dword [esp + 0x34], eax
mov edi, eax
pop ecx
test eax, eax
je 0x405016
mov ecx, dword [esp + 0x44]
jmp 0x404f0f
xor eax, eax
lea edi, [esp + 0xc8]
mov dword [esp + 0x30], eax
mov edx, dword [esp + 0x28]
xor esi, esi
test edx, edx
je 0x404f23
mov eax, dword [esp + 0x48]
mov esi, dword [esp + 0x2c]
mov byte [edi], al
movsx eax, byte [ecx]
test eax, eax
je 0x404f4f
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 0x404f47
mov byte [esi + edi], al
inc esi
inc ecx
movsx eax, byte [ecx]
test eax, eax
jne 0x404f39
test edx, edx
je 0x404f5b
mov eax, dword [esp + 0x48]
mov byte [esi + edi], al
inc esi
mov byte [esi + edi], 0
jmp case.default.0x4046b5
mov eax, dword [esp + 0x18]
add eax, 4
mov dword [esp + 0x18], eax
mov eax, dword [eax - 4]
test eax, eax
je 0x404d65
mov edx, dword [eax]
test edx, edx
je 0x404d65
mov eax, dword [eax + 4]
mov ecx, dword [esp + 0x40]
shr eax, 1
push eax
call fcn.00405071
pop ecx
jmp 0x404d65
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 0x404fde
cmp byte [edx], 0
je 0x404fde
mov ecx, dword [esp + 0x40]
push 0xffffffffffffffff
call fcn.00405071
push dword [esp + 0x30]
mov ecx, dword [esp + 0x48]
mov edx, 0x478e78
call fcn.00405071
mov eax, dword [esp + 0x54]
pop ecx
pop ecx
mov edx, dword [esi + eax + 0xc]
mov ecx, dword [esp + 0x40]
push 0xffffffffffffffff
call fcn.00405071
pop ecx
mov ecx, dword [esp + 0x44]
xor eax, eax
mov dword [esp + 0x20], eax
xor esi, esi
mov dword [esp + 0x18], ecx
jmp 0x4048bd
push dword [esp + 0x2c]
mov ecx, dword [esp + 0x44]
mov edx, 0x478e48
call fcn.00405071
pop ecx
mov ecx, dword [esp + 0x22c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00453154
mov esp, ebp
pop ebp
ret