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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x228
mov eax, dword [0x475008]
xor eax, esp
mov dword [esp + 0x224], eax
mov dword [esp + 0x3c], ecx
mov ecx, dword [ebp + 8]
push esi
push edi
xor edi, edi
mov dword [esp + 0x64], edx
movsx eax, byte [ecx]
xor esi, esi
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], edi
test eax, eax
je 0x40500d
movsd xmm1, qword [0x4702e0]
xorps xmm0, xmm0
movsd xmm2, qword [0x4707a0]
movsd xmm4, qword [0x4702d8]
movsd xmm7, qword [0x470360]
movsd xmm5, qword [0x470330]
movsd xmm6, qword [0x4702c8]
movsd xmm3, qword [0x4702f8]
movsd qword [esp + 0xb0], xmm1
movsd xmm1, qword [0x4702c0]
movsd qword [esp + 0xb8], xmm1
movsd xmm1, qword [0x4702e8]
mov dword [esp + 0x34], 1
mov dword [esp + 0x60], 0x154
mov dword [esp + 0x68], 0x136
mov dword [esp + 0x6c], 0xa5
mov dword [esp + 0x58], 0x15e
mov dword [esp + 0x5c], 0xfffffea2
mov dword [esp + 0x54], 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
mov dword [esp + 0x30], edx
cmp eax, 0x25
je 0x404435
mov edx, dword [esp + 0x20]
mov edi, ecx
mov ecx, dword [esp + 0x34]
inc edx
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], edx
movsx eax, byte [edx]
mov dword [esp + 0x38], eax
cmp eax, 0x25
je 0x4043e0
test eax, eax
je 0x4043dc
inc ecx
inc edx
movsx eax, byte [edx]
mov dword [esp + 0x38], eax
cmp eax, 0x25
jne 0x4043ca
mov dword [esp + 0x20], edx
push ecx
mov ecx, dword [esp + 0x48]
mov edx, edi
call fcn.00405066
cmp dword [esp + 0x3c], 0
pop ecx
je 0x40500d
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 + 0x20]
inc ecx
mov dword [esp + 0x20], ecx
movsx ecx, byte [ecx]
test ecx, ecx
je 0x404ffa
mov edx, dword [esp + 0x20]
xor al, al
xor ah, ah
mov byte [esp + 0x3f], al
mov byte [esp + 0x3e], al
mov byte [esp + 0x29], ah
mov byte [esp + 0x17], al
mov byte [esp + 0x15], al
mov byte [esp + 0x4c], ah
mov eax, ecx
sub eax, 0x20
je 0x4044b9
sub eax, 1
je 0x4044af
dec eax
sub eax, 1
je 0x4044a5
sub eax, 8
je 0x40449b
dec eax
sub eax, 1
je 0x404491
sub eax, 3
jne 0x4044c9
mov eax, dword [esp + 0x34]
mov byte [esp + 0x3f], al
jmp 0x4044c1
mov eax, dword [esp + 0x34]
mov byte [esp + 0x4c], al
jmp 0x4044c1
mov eax, dword [esp + 0x34]
mov byte [esp + 0x15], al
jmp 0x4044c1
mov eax, dword [esp + 0x34]
mov byte [esp + 0x29], al
jmp 0x4044c1
mov eax, dword [esp + 0x34]
mov byte [esp + 0x3e], al
jmp 0x4044c1
mov eax, dword [esp + 0x34]
mov byte [esp + 0x17], al
inc edx
movsx ecx, byte [edx]
test ecx, ecx
jne 0x404465
and dword [esp + 0x24], 0
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x30]
cmp ecx, 0x2a
jne 0x40450b
add dword [esp + 0x1c], 4
mov eax, dword [esp + 0x4c]
cmp dword [edx], 0
movzx eax, al
cmovl eax, dword [esp + 0x34]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x20]
inc eax
mov dword [esp + 0x20], eax
movsx ecx, byte [eax]
mov eax, dword [edx]
neg eax
cmp dword [edx], 0
cmovge eax, dword [edx]
jmp 0x40453e
cmp ecx, 0x30
jl 0x40454b
mov edi, dword [esp + 0x24]
cmp ecx, 0x39
ja 0x404532
mov eax, dword [esp + 0x20]
add ecx, 0xffffffd0
imul edi, edi, 0xa
add edi, ecx
inc eax
mov dword [esp + 0x20], eax
movsx ecx, byte [eax]
cmp ecx, 0x30
jge 0x404514
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x60]
cmovg eax, dword [esp + 0x60]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
cmp ecx, 0x2e
jne 0x4045ad
mov ecx, dword [esp + 0x20]
xor edx, edx
inc ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x20], ecx
movsx ecx, byte [ecx]
cmp ecx, 0x2a
jne 0x4045a6
mov eax, dword [eax]
mov ecx, dword [esp + 0x20]
add dword [esp + 0x1c], 4
inc ecx
cdq
xor eax, edx
mov dword [esp + 0x20], ecx
sub eax, edx
movsx ecx, byte [ecx]
mov dword [esp + 0x2c], eax
jmp 0x4045b2
cmp ecx, 0x39
ja 0x4045b2
mov eax, dword [esp + 0x20]
add ecx, 0xffffffd0
imul edx, edx, 0xa
add edx, ecx
inc eax
mov dword [esp + 0x2c], edx
mov dword [esp + 0x20], eax
movsx ecx, byte [eax]
cmp ecx, 0x30
jge 0x404589
jmp 0x4045b2
or dword [esp + 0x2c], 0xffffffff
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x50], eax
cmp ecx, 0x6c
jne 0x4045f9
mov al, byte [esp + 0x34]
mov byte [esp + 0x2b], al
mov eax, dword [esp + 0x20]
inc eax
mov dword [esp + 0x20], eax
mov al, byte [eax]
cmp al, cl
jne 0x4045e9
mov ecx, dword [esp + 0x50]
add ecx, 2
mov dword [esp + 0x20], ecx
mov cl, byte [ecx]
jmp 0x4045eb
mov cl, al
cmp al, 0x6c
movsx ecx, cl
sete al
mov byte [esp + 0x2a], al
jmp 0x404603
xor al, al
mov byte [esp + 0x2a], al
mov byte [esp + 0x2b], al
xor eax, eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x38], eax
movsx eax, byte [eax + 0x46eb68]
cmp ecx, eax
je 0x404633
mov eax, dword [esp + 0x38]
inc dword [esp + 0x30]
add eax, 6
mov dword [esp + 0x38], eax
cmp eax, 0x8a
jb 0x40460d
jmp 0x40500d
imul ecx, dword [esp + 0x30], 6
add ecx, 0x46eb68
cmp dword [esp + 0x64], 0
mov dword [esp + 0x30], ecx
jne 0x404653
test byte [ecx + 2], 2
jne 0x40500d
mov al, byte [ecx + 3]
and dword [esp + 0x40], 0
mov byte [esp + 0x16], al
test ecx, ecx
je 0x40500d
mov ecx, dword [esp + 0x2c]
cmp ecx, 0x136
jle 0x404688
mov edx, dword [esp + 0x30]
test byte [edx + 2], 4
mov edx, dword [esp + 0x1c]
cmove ecx, dword [esp + 0x68]
mov dword [esp + 0x2c], ecx
movzx eax, al
dec eax
cmp eax, 0x10
ja case.default.0x404695
jmp dword [eax*4 + 0x405022]
mov cl, byte [esp + 0x34]
xor al, al
jmp 0x4046ac
mov al, byte [esp + 0x2a]
mov cl, byte [esp + 0x2b]
mov esi, dword [esp + 0x30]
test byte [esi + 2], 1
je 0x404713
test al, al
je 0x4046c6
add dword [esp + 0x1c], 8
mov ecx, dword [edx]
mov esi, dword [edx + 4]
jmp 0x4046e0
mov edi, dword [esp + 0x1c]
mov eax, dword [edx]
add edi, 4
cdq
test cl, cl
mov dword [esp + 0x1c], edi
mov esi, edx
mov ecx, eax
jne 0x4046e0
mov dword [esp + 0x1c], edi
test esi, esi
jg 0x4046f5
jl 0x4046ea
test ecx, ecx
jae 0x4046f5
neg ecx
mov dl, 0x2d
adc esi, 0
neg esi
jmp 0x40473a
cmp byte [esp + 0x15], 0
mov dword [esp + 0x18], ecx
je 0x404704
mov dl, 0x2b
jmp 0x40473e
cmp byte [esp + 0x17], 0
sete dl
dec dl
and dl, 0x20
jmp 0x40473e
test al, al
je 0x404721
add dword [esp + 0x1c], 8
mov esi, dword [edx + 4]
jmp 0x404736
mov eax, dword [esp + 0x1c]
xor esi, esi
add eax, 4
mov dword [esp + 0x1c], eax
test cl, cl
jne 0x404736
mov dword [esp + 0x1c], eax
mov ecx, dword [edx]
xor dl, dl
mov dword [esp + 0x18], ecx
mov eax, ecx
mov byte [esp + 0x15], dl
or eax, esi
jne 0x40474c
mov byte [esp + 0x29], al
cmp byte [esp + 0x3f], 0
je 0x404771
mov ecx, dword [esp + 0x24]
xor eax, eax
test dl, dl
setne al
sub ecx, eax
mov eax, dword [esp + 0x2c]
cmp eax, ecx
cmovl eax, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x2c], eax
cmp byte [esp + 0x16], 0x11
lea edi, [esp + 0x225]
jne 0x4047dd
push 0
push 0xa
pop eax
push eax
push esi
push ecx
call fcn.00460900
mov edi, eax
cmp edi, 4
jge 0x4047b8
push 0
push 0xa
pop eax
push eax
push esi
push dword [esp + 0x24]
call fcn.00460890
push 0
push 0xa
push edx
push eax
call fcn.00460900
cmp eax, dword [esp + 0x34]
jne 0x4047ba
test edx, edx
jne 0x4047ba
xor edi, edi
mov al, byte [edi*2 + 0x46cbe4]
mov byte [esp + 0x223], al
mov al, byte [edi*2 + 0x46cbe5]
lea edi, [esp + 0x223]
mov byte [esp + 0x224], al
mov ecx, dword [esp + 0x30]
movzx eax, byte [ecx + 4]
add eax, str.0123456789ABCDEF0123456789abcdef
mov dword [esp + 0x48], eax
movzx eax, byte [ecx + 1]
cdq
mov ecx, eax
mov dword [esp + 0x38], edx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x40], ecx
push edx
push ecx
push esi
push eax
dec edi
call fcn.00460900
push dword [esp + 0x38]
mov ecx, dword [esp + 0x4c]
push dword [esp + 0x44]
push esi
mov al, byte [eax + ecx]
push dword [esp + 0x24]
mov byte [edi], al
call fcn.00460890
mov ecx, dword [esp + 0x40]
mov esi, edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0x18], eax
test esi, esi
ja 0x404801
jb 0x40483e
test eax, eax
jne 0x404801
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0xc8]
and dword [esp + 0x40], 0
sub eax, ecx
add eax, 0xfffffea3
mov dword [esp + 0x18], edi
add eax, edi
test eax, eax
jle 0x404871
dec edi
dec eax
mov byte [edi], 0x30
test eax, eax
jg 0x40485f
and dword [esp + 0x40], 0
mov dword [esp + 0x18], edi
mov al, byte [esp + 0x15]
test al, al
je 0x404880
dec edi
mov dword [esp + 0x18], edi
mov byte [edi], al
cmp byte [esp + 0x29], 0
je 0x4048b2
mov eax, dword [esp + 0x30]
mov al, byte [eax + 5]
test al, al
je 0x4048b2
movzx eax, al
add eax, 0x46cb68
mov cl, byte [eax]
cmp byte [edi], cl
je 0x4048b2
test cl, cl
je 0x4048b2
dec edi
inc eax
mov byte [edi], cl
mov cl, byte [eax]
test cl, cl
jne 0x4048a4
mov dword [esp + 0x18], edi
lea esi, [esp + 0x225]
sub esi, edi
jmp case.default.0x404695
add dword [esp + 0x1c], 8
movsd xmm1, qword [edx]
test ecx, ecx
jns 0x4048d2
push 6
pop ecx
jmp 0x4048db
cmp ecx, dword [esp + 0x6c]
cmovg ecx, dword [esp + 0x6c]
comisd xmm0, xmm1
mov dword [esp + 0x2c], ecx
jbe 0x4048ec
xorps xmm1, xmm2
mov dh, 0x2d
jmp 0x404904
cmp byte [esp + 0x15], 0
je 0x4048f7
mov dh, 0x2b
jmp 0x404904
cmp byte [esp + 0x17], 0
sete dh
dec dh
and dh, 0x20
mov dl, byte [esp + 0x16]
mov byte [esp + 0x17], dh
cmp dl, 4
jne 0x40491a
test ecx, ecx
jle 0x40491a
dec ecx
mov dword [esp + 0x2c], ecx
movsd xmm2, qword [esp + 0xb0]
mov eax, ecx
mov byte [esp + 0x15], dl
test ecx, ecx
jle 0x40494b
mov dl, byte [esp + 0x16]
mov esi, dword [esp + 0x30]
mov dword [esp + 0x30], esi
mov byte [esp + 0x15], dl
dec eax
mulsd xmm2, xmm4
test eax, eax
jg 0x40493d
and dword [esp + 0x40], 0
cmp dl, 2
jne 0x40495d
movaps xmm0, xmm2
addsd xmm1, xmm0
movsd xmm0, qword [esp + 0x70]
xor edi, edi
ucomisd xmm1, xmm1
mov dword [esp + 0x18], edi
lahf
test ah, 0x44
jnp 0x40497e
mov edi, 0x46ba10
push 3
mov dword [esp + 0x1c], edi
pop esi
jmp case.default.0x404695
comisd xmm1, xmm0
jbe 0x404a60
comisd xmm1, xmm7
mov eax, dword [esp + 0x58]
jb 0x4049b0
movsd xmm0, qword [esp + 0xb8]
cmp edi, eax
jg 0x4049ac
mulsd xmm1, xmm0
add edi, 0x20
comisd xmm1, xmm7
jae 0x40499b
mov dword [esp + 0x18], edi
comisd xmm1, xmm5
jb 0x4049cb
cmp edi, eax
jg 0x4049c7
mulsd xmm1, xmm6
add edi, 8
comisd xmm1, xmm5
jae 0x4049b6
mov dword [esp + 0x18], edi
comisd xmm1, xmm3
jb 0x4049e4
cmp edi, eax
jg 0x4049e0
mulsd xmm1, xmm4
inc edi
comisd xmm1, xmm3
jae 0x4049d1
mov dword [esp + 0x18], edi
comisd xmm6, xmm1
mov esi, dword [esp + 0x5c]
jbe 0x404a03
cmp edi, esi
jl 0x4049ff
mulsd xmm1, xmm5
sub edi, 8
comisd xmm6, xmm1
ja 0x4049ee
mov dword [esp + 0x18], edi
movsd xmm0, qword [esp + 0xc0]
comisd xmm0, xmm1
jbe 0x404a25
cmp edi, esi
jl 0x404a21
mulsd xmm1, xmm3
dec edi
comisd xmm0, xmm1
ja 0x404a12
mov dword [esp + 0x18], edi
cmp edi, eax
jg 0x404a2d
cmp edi, esi
jge 0x404a60
cmp dh, 0x2d
jne 0x404a39
mov edi, str._Inf
jmp 0x404a49
cmp dh, 0x2b
mov edi, str.Inf
mov eax, 0x46ba24
cmovne edi, eax
mov esi, edi
mov dword [esp + 0x18], edi
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x404a52
sub esi, ecx
jmp case.default.0x404695
cmp dl, 2
je 0x404a78
addsd xmm1, xmm2
comisd xmm1, xmm3
jb 0x404a78
inc edi
mulsd xmm1, xmm4
mov dword [esp + 0x18], edi
mov ah, byte [esp + 0x29]
cmp dl, 4
jne 0x404aa3
test ah, ah
sete byte [esp + 0x2a]
cmp edi, 0xfffffffc
jl 0x404a9b
cmp edi, ecx
jg 0x404a9b
sub ecx, edi
mov al, 2
mov dword [esp + 0x2c], ecx
jmp 0x404a9d
mov al, 3
mov byte [esp + 0x15], al
jmp 0x404aac
mov al, byte [esp + 0x15]
mov byte [esp + 0x2a], 0
xor edx, edx
lea esi, [esp + 0xc8]
cmp al, 3
cmovne edx, edi
and dword [esp + 0x38], 0
test ecx, ecx
movzx ecx, byte [esp + 0xc8]
setg al
or al, byte [esp + 0x3e]
or al, ah
cmp byte [esp + 0x17], 0
mov byte [esp + 0x2b], al
movzx eax, byte [esp + 0x17]
cmovne ecx, eax
lea eax, [esp + 0xc9]
cmovne esi, eax
mov byte [esp + 0xc8], cl
mov ecx, dword [esp + 0x38]
test edx, edx
jns 0x404b02
mov byte [esi], 0x30
inc esi
jmp 0x404b2e
mov eax, ecx
inc ecx
cmp eax, 0x10
jl 0x404b0f
push 0x30
pop eax
jmp 0x404b26
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 0x404b02
mov al, byte [esp + 0x2b]
test al, al
je 0x404b4b
mov byte [esi], 0x2e
inc esi
jmp 0x404b4b
cmp dword [esp + 0x2c], 0
jle 0x404b88
mov byte [esi], 0x30
inc esi
dec dword [esp + 0x2c]
add edx, 1
js 0x404b3c
mov edx, dword [esp + 0x2c]
test edx, edx
jle 0x404b88
dec edx
mov eax, ecx
inc ecx
cmp eax, 0x10
jl 0x404b66
push 0x30
pop eax
jmp 0x404b7d
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 0x404b58
mov al, byte [esp + 0x2b]
cmp byte [esp + 0x2a], 0
je 0x404bb6
test al, al
je 0x404bb6
jmp 0x404b99
dec esi
mov byte [esi], 0
cmp byte [esi - 1], 0x30
je 0x404b95
cmp byte [esi - 1], 0x2e
jne 0x404bb6
cmp byte [esp + 0x3e], 0
je 0x404bb2
mov byte [esi], 0x30
inc esi
jmp 0x404bb6
dec esi
mov byte [esi], 0
cmp byte [esp + 0x16], 3
je 0x404bc8
cmp byte [esp + 0x15], 3
jne 0x404c2e
test edi, edi
je 0x404c2e
mov eax, dword [esp + 0x30]
lea edi, [esi + 2]
movzx eax, byte [eax + 4]
mov al, byte [eax + str.0123456789ABCDEF0123456789abcdef]
mov byte [esi], al
mov eax, dword [esp + 0x18]
mov ecx, eax
neg ecx
test eax, eax
cmovns ecx, eax
sets al
lea eax, [eax*2 + 0x2b]
mov byte [esi + 1], al
mov esi, edi
cmp ecx, dword [esp + 0x54]
jl 0x404c14
mov eax, ecx
lea esi, [edi + 1]
cdq
idiv dword [esp + 0x54]
add al, 0x30
mov byte [edi], al
mov eax, ecx
cdq
idiv dword [esp + 0x54]
mov ecx, edx
mov eax, ecx
cdq
push 0xa
pop edi
idiv edi
add al, 0x30
mov byte [esi], al
mov eax, ecx
cdq
idiv edi
add dl, 0x30
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 + 0x3f], 0
mov dword [esp + 0x18], edi
je case.default.0x404695
cmp byte [esp + 0x4c], 0
jne 0x404f6c
mov eax, dword [esp + 0x24]
cmp esi, eax
jge 0x404f5b
mov ecx, eax
mov edx, eax
sub ecx, esi
cmp eax, ecx
jl 0x404c7f
mov esi, edi
sub esi, ecx
mov al, byte [esi + edx]
mov byte [esp + edx + 0xc8], al
dec edx
cmp edx, ecx
jge 0x404c70
xor eax, eax
cmp byte [esp + 0x17], al
setne al
test ecx, ecx
je 0x404ca1
push ecx
lea edx, [esp + 0xcc]
add eax, edx
push 0x30
push eax
call fcn.0044e5c0
add esp, 0xc
mov eax, dword [esp + 0x24]
mov esi, eax
jmp 0x404f5b
mov eax, dword [esp + 0x44]
mov ecx, dword [edx]
add dword [esp + 0x1c], 4
mov eax, dword [eax + 8]
mov dword [ecx], eax
xor eax, eax
xor esi, esi
mov dword [esp + 0x24], eax
jmp 0x404f54
mov esi, dword [esp + 0x34]
lea edi, [esp + 0xc8]
mov byte [esp + 0xc8], 0x25
mov dword [esp + 0x18], edi
jmp case.default.0x404695
cmp byte [esp + 0x16], 9
jne 0x404cf5
add dword [esp + 0x1c], 4
mov eax, dword [edx]
jmp 0x404d01
mov eax, dword [esp + 0x20]
inc eax
mov dword [esp + 0x20], eax
movsx eax, byte [eax]
mov esi, dword [esp + 0x2c]
mov cl, al
mov byte [esp + 0xc8], cl
test esi, esi
js 0x404d2f
cmp esi, dword [esp + 0x34]
jle 0x404d33
lea eax, [esi - 1]
push eax
push ecx
lea eax, [esp + 0xd1]
push eax
call fcn.0044e5c0
add esp, 0xc
jmp 0x404d33
mov esi, dword [esp + 0x34]
lea edi, [esp + 0xc8]
mov dword [esp + 0x18], edi
jmp case.default.0x404695
mov edi, dword [edx]
add dword [esp + 0x1c], 4
mov dword [esp + 0x18], edi
test edi, edi
jne 0x404d5d
mov edi, 0x46ba28
mov dword [esp + 0x18], edi
jmp 0x404d6d
mov eax, dword [esp + 0x40]
cmp byte [esp + 0x16], 7
cmove eax, edi
mov dword [esp + 0x40], eax
mov esi, edi
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x404d72
mov eax, dword [esp + 0x2c]
sub esi, ecx
test eax, eax
js case.default.0x404695
cmp eax, esi
jge case.default.0x404695
mov esi, eax
jmp case.default.0x404695
cmp byte [esp + 0x16], 0x10
mov edi, dword [edx]
push 0x27
pop eax
push 0x22
pop ecx
cmove eax, ecx
mov dword [esp + 0x30], edi
add dword [esp + 0x1c], 4
mov ecx, edi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x50], edi
test edi, edi
jne 0x404dd3
cmp byte [esp + 0x16], 0xc
mov ecx, str.NULL
mov edx, str._NULL_
cmovne ecx, edx
mov dword [esp + 0x50], ecx
movsx esi, byte [ecx]
xor edx, edx
and dword [esp + 0x38], edx
test esi, esi
je 0x404e14
mov edi, dword [esp + 0x38]
movzx eax, al
mov dword [esp + 0x48], eax
mov al, byte [esp + 0x16]
mov byte [esp + 0x16], al
cmp esi, dword [esp + 0x48]
lea eax, [edx + 1]
cmovne eax, edx
inc edi
mov edx, eax
movsx esi, byte [edi + ecx]
test esi, esi
jne 0x404df3
and dword [esp + 0x40], esi
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x30]
test edi, edi
je 0x404e25
cmp byte [esp + 0x16], 0xc
jne 0x404e25
mov eax, dword [esp + 0x34]
jmp 0x404e27
xor eax, eax
mov dword [esp + 0x30], eax
lea eax, [eax*2 + 1]
add eax, dword [esp + 0x38]
add eax, edx
cmp eax, 0x15e
jle 0x404e5e
push eax
call fcn.00403d0f
mov dword [esp + 0x44], eax
mov edi, eax
mov dword [esp + 0x1c], eax
pop ecx
test eax, eax
je 0x40500d
mov ecx, dword [esp + 0x50]
jmp 0x404e69
lea edi, [esp + 0xc8]
mov dword [esp + 0x18], edi
mov edx, dword [esp + 0x30]
xor esi, esi
test edx, edx
je 0x404e7d
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x34]
mov byte [edi], al
movsx eax, byte [ecx]
test eax, eax
je 0x404ea9
mov edx, dword [esp + 0x2c]
movzx edx, dl
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x30]
mov byte [esi + edi], al
inc esi
cmp eax, dword [esp + 0x48]
jne 0x404ea1
mov byte [esi + edi], al
inc esi
inc ecx
movsx eax, byte [ecx]
test eax, eax
jne 0x404e93
test edx, edx
je 0x404eb5
mov eax, dword [esp + 0x2c]
mov byte [esi + edi], al
inc esi
mov byte [esi + edi], 0
jmp case.default.0x404695
add dword [esp + 0x1c], 4
mov eax, dword [edx]
test eax, eax
je 0x404cbc
mov edx, dword [eax]
test edx, edx
je 0x404cbc
mov eax, dword [eax + 4]
mov ecx, dword [esp + 0x44]
shr eax, 1
push eax
call fcn.00405066
pop ecx
jmp 0x404cbc
mov ecx, dword [esp + 0x1c]
lea eax, [ecx + 8]
imul esi, dword [eax - 4], 0x30
mov dword [esp + 0x50], eax
mov eax, dword [ecx]
mov dword [esp + 0x48], eax
mov edx, dword [esi + eax + 8]
test edx, edx
je 0x404f31
cmp byte [edx], 0
je 0x404f31
mov ecx, dword [esp + 0x44]
push 0xffffffffffffffff
call fcn.00405066
push dword [esp + 0x38]
mov ecx, dword [esp + 0x4c]
mov edx, 0x46ba3c
call fcn.00405066
mov eax, dword [esp + 0x50]
pop ecx
pop ecx
mov edx, dword [esi + eax + 0xc]
mov ecx, dword [esp + 0x44]
push 0xffffffffffffffff
call fcn.00405066
and dword [esp + 0x28], 0
xor esi, esi
mov eax, dword [esp + 0x54]
pop ecx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x24]
cmp byte [esp + 0x4c], 0
jne 0x404f6c
mov edx, eax
sub edx, esi
test edx, edx
jle 0x404f6c
mov ecx, dword [esp + 0x44]
call fcn.0040423d
test esi, esi
jle 0x404f7d
mov ecx, dword [esp + 0x44]
mov edx, edi
push esi
call fcn.00405066
pop ecx
cmp byte [esp + 0x4c], 0
je 0x404f99
mov eax, dword [esp + 0x24]
sub eax, esi
test eax, eax
jle 0x404f99
mov ecx, dword [esp + 0x44]
mov edx, eax
call fcn.0040423d
mov eax, dword [esp + 0x40]
test eax, eax
je 0x404fa8
push eax
call fcn.00403dd6
pop ecx
mov ecx, dword [esp + 0x20]
inc ecx
mov dword [esp + 0x20], ecx
movsx eax, byte [ecx]
test eax, eax
je 0x40500d
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 edx, dword [esp + 0x1c]
jmp 0x40439e
push dword [esp + 0x34]
mov ecx, dword [esp + 0x48]
mov edx, 0x46ba0c
call fcn.00405066
pop ecx
mov ecx, dword [esp + 0x22c]
pop edi
pop esi
xor ecx, esp
call fcn.0044c4ac
mov esp, ebp
pop ebp
ret