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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x104
and dword [esp + 0x38], 0
push ebx
push esi
mov dword [esp + 0x58], edx
mov edx, dword [ebp + 0xc]
mov eax, edx
push edi
mov dword [esp + 0x34], ecx
xor edi, edi
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x10], edx
test ecx, ecx
je 0x406ec2
and cl, 2
mov byte [esp + 0xc], cl
je 0x406ead
mov edx, dword [eax]
mov dword [esp + 0x44], edx
xor edx, edx
inc edx
and byte [esp + 0x5c], dl
test cl, cl
lea edx, [eax + 4]
cmove edx, eax
mov dword [esp + 0x10], edx
jmp 0x406ecc
mov byte [esp + 0x5c], 0
mov byte [esp + 0xc], 0
mov ecx, dword [ebp + 8]
movsx eax, byte [ecx]
test eax, eax
je case.default.0x4071e9
movsd xmm0, qword [0x47ad30]
movsd qword [esp + 0x80], xmm0
xorps xmm0, xmm0
movsd qword [esp + 0x70], xmm0
movsd xmm0, qword [0x47abf8]
movsd qword [esp + 0x98], xmm0
movsd xmm0, qword [0x47abf0]
movsd qword [esp + 0x78], xmm0
movsd xmm0, qword [0x47ac00]
movsd qword [esp + 0xa0], xmm0
movsd xmm0, qword [0x47acb8]
movsd qword [esp + 0xa8], xmm0
movsd xmm0, qword [0x47aca8]
movsd qword [esp + 0xb0], xmm0
movsd xmm0, qword [0x47ac88]
movsd qword [esp + 0xb8], xmm0
movsd xmm0, qword [0x47ac10]
movsd qword [esp + 0x68], xmm0
movsd xmm0, qword [0x47abe8]
movsd qword [esp + 0xc0], xmm0
lea esi, [edx]
cmp eax, 0x25
je 0x406fb2
mov edi, ecx
inc ecx
mov al, byte [ecx]
mov byte [esp + 0x17], al
cmp al, 0x25
je 0x406f8e
test al, al
jne 0x406f7f
mov eax, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x34]
sub eax, edi
push eax
mov edx, edi
call fcn.00407d8c
cmp byte [esp + 0x1b], 0
pop ecx
je case.default.0x4071e9
mov ecx, dword [esp + 0x2c]
inc ecx
mov dword [esp + 0x2c], ecx
movsx ecx, byte [ecx]
test ecx, ecx
je 0x407c44
xor edx, edx
mov byte [esp + 0x33], dl
mov byte [esp + 0xe], dl
mov byte [esp + 0x22], dl
mov byte [esp + 0x32], dl
mov byte [esp + 0xf], dl
mov byte [esp + 0x28], dl
mov edx, dword [esp + 0x2c]
mov eax, ecx
sub eax, 0x20
je 0x40702d
sub eax, 1
je 0x407024
dec eax
sub eax, 1
je 0x40701b
sub eax, 8
je 0x407012
dec eax
sub eax, 1
je 0x407009
sub eax, 3
jne 0x40703c
inc eax
mov byte [esp + 0x33], al
jmp 0x407034
xor eax, eax
inc eax
mov byte [esp + 0x28], al
jmp 0x407034
xor eax, eax
inc eax
mov byte [esp + 0xf], al
jmp 0x407034
xor eax, eax
inc eax
mov byte [esp + 0x22], al
jmp 0x407034
xor eax, eax
inc eax
mov byte [esp + 0xe], al
jmp 0x407034
xor eax, eax
inc eax
mov byte [esp + 0x32], al
inc edx
movsx ecx, byte [edx]
test ecx, ecx
jne 0x406fe0
xor eax, eax
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x18], eax
cmp ecx, 0x2a
jne 0x407097
cmp byte [esp + 0xc], al
je 0x407060
mov ecx, dword [esp + 0x44]
call fcn.00406e2b
jmp 0x407069
mov eax, dword [esi]
add edx, 4
mov dword [esp + 0x10], edx
mov ecx, dword [esp + 0x28]
test eax, eax
mov esi, dword [esp + 0x2c]
push 1
movzx ecx, cl
pop edx
cmovs ecx, edx
mov edx, eax
neg edx
mov dword [esp + 0x28], ecx
inc esi
test eax, eax
cmovns edx, eax
mov dword [esp + 0x18], edx
movsx ecx, byte [esi]
mov edx, dword [esp + 0x10]
jmp 0x4070ba
mov esi, dword [esp + 0x2c]
cmp ecx, 0x30
jl 0x4070be
cmp ecx, 0x39
ja 0x4070b6
imul eax, eax, 0xa
add ecx, 0xffffffd0
add eax, ecx
inc esi
movsx ecx, byte [esi]
cmp ecx, 0x30
jge 0x4070a0
mov dword [esp + 0x18], eax
mov dword [esp + 0x2c], esi
mov eax, edx
cmp ecx, 0x2e
jne 0x407175
and dword [esp + 0x24], 0
inc esi
mov dword [esp + 0x2c], esi
movsx ecx, byte [esi]
cmp ecx, 0x2a
jne 0x40710d
cmp byte [esp + 0xc], 0
je 0x4070ed
mov ecx, dword [esp + 0x44]
call fcn.00406e2b
jmp 0x4070f6
mov eax, dword [eax]
add edx, 4
mov dword [esp + 0x10], edx
inc esi
cdq
xor eax, edx
mov dword [esp + 0x2c], esi
sub eax, edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x24], eax
movsx ecx, byte [esi]
jmp 0x40717a
cmp ecx, 0x30
jl 0x40717a
mov eax, dword [esp + 0x24]
cmp ecx, 0x39
ja 0x40717a
imul eax, eax, 0xa
add ecx, 0xffffffd0
add eax, ecx
inc esi
mov dword [esp + 0x24], eax
mov dword [esp + 0x2c], esi
movsx ecx, byte [esi]
cmp ecx, 0x30
jge 0x407116
xor al, al
mov byte [esp + 0x23], al
mov byte [esp + 0x17], al
xor al, al
mov esi, 0x473e08
mov byte [esp + 0xd], al
xor eax, eax
mov dword [esp + 0x3c], esi
mov dword [esp + 0x38], eax
movsx eax, byte [esi]
cmp ecx, eax
je 0x4071b0
inc dword [esp + 0x38]
push 6
pop eax
add esi, eax
cmp esi, 0x473e92
jl 0x407153
mov ch, byte [esp + 0xd]
mov esi, dword [esp + 0x3c]
jmp 0x4071d7
or dword [esp + 0x24], 0xffffffff
cmp ecx, 0x6c
jne 0x407134
xor eax, eax
inc eax
mov byte [esp + 0x17], al
mov eax, dword [esp + 0x2c]
inc eax
mov dword [esp + 0x2c], eax
mov al, byte [eax]
cmp al, cl
jne 0x4071a0
add esi, 2
mov dword [esp + 0x2c], esi
mov cl, byte [esi]
jmp 0x4071a2
mov cl, al
cmp al, 0x6c
movsx ecx, cl
sete al
mov byte [esp + 0x23], al
jmp 0x40713e
imul esi, dword [esp + 0x38], 6
add esi, 0x473e08
cmp byte [esp + 0x5c], 0
mov dword [esp + 0x3c], esi
jne 0x4071d0
test byte [esi + 2], 2
jne case.default.0x4071e9
mov ch, byte [esi + 3]
mov byte [esp + 0xd], ch
and dword [esp + 0x38], 0
movzx eax, ch
dec eax
cmp eax, 0xf
ja case.default.0x4071e9
jmp dword [eax*4 + 0x407c5f]
xor ecx, ecx
xor al, al
inc ecx
jmp 0x4071ff
mov al, byte [esp + 0x23]
mov cl, byte [esp + 0x17]
test byte [esi + 2], 1
je 0x40728f
cmp byte [esp + 0xc], 0
je 0x40721b
mov ecx, dword [esp + 0x44]
call fcn.00406e2b
jmp 0x407241
test al, al
je 0x40722b
add dword [esp + 0x10], 8
mov eax, dword [edx]
mov esi, dword [edx + 4]
jmp 0x407243
mov eax, dword [esp + 0x10]
add eax, 4
mov dword [esp + 0x10], eax
test cl, cl
jne 0x40723e
mov dword [esp + 0x10], eax
mov eax, dword [edx]
cdq
mov esi, edx
test esi, esi
jg 0x407271
jl 0x40724d
test eax, eax
jae 0x407271
test eax, eax
jne 0x407262
mov ecx, 0x80000000
cmp esi, ecx
jne 0x407262
and dword [esp + 0x1c], eax
mov esi, ecx
jmp 0x40726d
neg eax
mov dword [esp + 0x1c], eax
adc esi, 0
neg esi
mov cl, 0x2d
jmp 0x4072d4
cmp byte [esp + 0xf], 0
mov dword [esp + 0x1c], eax
je 0x407280
mov cl, 0x2b
jmp 0x4072d4
cmp byte [esp + 0x32], 0
sete cl
dec cl
and cl, 0x20
jmp 0x4072d4
cmp byte [esp + 0xc], 0
je 0x4072a3
mov ecx, dword [esp + 0x44]
call fcn.00406e2b
mov esi, edx
jmp 0x4072ce
test al, al
je 0x4072b7
mov ecx, dword [esp + 0x10]
mov esi, dword [edx + 4]
add ecx, 8
mov dword [esp + 0x10], ecx
jmp 0x4072cc
mov eax, dword [esp + 0x10]
xor esi, esi
add eax, 4
mov dword [esp + 0x10], eax
test cl, cl
jne 0x4072cc
mov dword [esp + 0x10], eax
mov eax, dword [edx]
mov dword [esp + 0x1c], eax
xor cl, cl
mov edx, dword [esp + 0x1c]
mov eax, edx
or eax, esi
mov byte [esp + 0xe], cl
jne 0x4072e6
mov byte [esp + 0x22], al
cmp byte [esp + 0x33], 0
je 0x407309
xor eax, eax
test cl, cl
mov ecx, dword [esp + 0x18]
setne al
sub ecx, eax
mov eax, dword [esp + 0x24]
cmp eax, ecx
cmovl eax, ecx
mov dword [esp + 0x24], eax
jmp 0x40730d
mov eax, dword [esp + 0x24]
cmp eax, 0x3c
jge 0x407326
push 0x46
pop edi
lea eax, [esp + 0xc8]
mov dword [esp + 0x58], edi
mov dword [esp + 0x48], eax
jmp 0x40734a
lea edi, [eax + 0xa]
push edi
mov dword [esp + 0x5c], edi
call fcn.004067d8
pop ecx
mov ecx, eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x38], ecx
test ecx, ecx
je 0x407c34
mov edx, dword [esp + 0x1c]
dec edi
add edi, eax
cmp byte [esp + 0xd], 0x10
jne 0x4073a0
push ebx
push 0
push 0xa
pop eax
push eax
push esi
push edx
call fcn.00468840
pop ebx
mov dword [esp + 0x40], ecx
cmp ecx, 4
jge 0x407382
push 0
push 0xa
push edx
push eax
call fcn.004687c0
xor ecx, ecx
inc ecx
cmp eax, ecx
jne 0x407386
test edx, edx
jne 0x407386
xor ecx, ecx
jmp 0x40738a
mov ecx, dword [esp + 0x40]
mov al, byte [ecx*2 + 0x4744e5]
mov byte [edi - 1], al
sub edi, 2
mov al, byte [ecx*2 + str.thstndrd]
mov byte [edi], al
mov ecx, dword [esp + 0x3c]
movzx eax, byte [ecx + 4]
add eax, str.0123456789ABCDEF0123456789abcdef
mov dword [esp + 0x60], eax
movzx eax, byte [ecx + 1]
cdq
mov ecx, eax
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x54], ecx
push edx
push ecx
push esi
push eax
dec edi
call fcn.004687c0
push dword [esp + 0x40]
mov ecx, dword [esp + 0x64]
push dword [esp + 0x58]
push esi
mov al, byte [eax + ecx]
push dword [esp + 0x28]
mov byte [edi], al
call fcn.00468750
mov ecx, dword [esp + 0x54]
mov esi, edx
mov edx, dword [esp + 0x40]
mov dword [esp + 0x1c], eax
test esi, esi
ja 0x4073c4
jb 0x407401
test eax, eax
jne 0x4073c4
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x48]
sub eax, edx
mov esi, dword [esp + 0x58]
sub eax, esi
inc eax
add eax, edi
jmp 0x40741b
dec edi
dec eax
mov byte [edi], 0x30
test eax, eax
jg 0x407416
mov al, byte [esp + 0xe]
test al, al
je 0x40742a
dec edi
mov byte [edi], al
cmp byte [esp + 0x22], 0
je 0x407450
mov eax, dword [esp + 0x3c]
mov al, byte [eax + 5]
test al, al
je 0x407450
movzx eax, al
add eax, 0x4716d0
jmp 0x40744a
dec edi
inc eax
mov byte [edi], cl
mov cl, byte [eax]
test cl, cl
jne 0x407446
sub edx, edi
dec esi
add esi, edx
jmp 0x407b44
cmp byte [esp + 0xc], 0
je 0x40748e
mov esi, dword [esp + 0x44]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jg 0x407474
movsd xmm1, qword [esp + 0x70]
jmp 0x407497
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
call fcn.0041a6f9
mov ch, byte [esp + 0xd]
movaps xmm1, xmm0
jmp 0x407497
add dword [esp + 0x10], 8
movsd xmm1, qword [edx]
mov edi, dword [esp + 0x24]
test edi, edi
movsd xmm2, qword [esp + 0x70]
push 6
pop eax
cmovs edi, eax
movsd qword [esp + 0x48], xmm1
comisd xmm2, xmm1
mov dword [esp + 0x24], edi
jbe 0x4074cb
xorps xmm1, xmmword [esp + 0x80]
mov cl, 0x2d
movsd qword [esp + 0x48], xmm1
jmp 0x4074e3
cmp byte [esp + 0xf], 0
je 0x4074d6
mov cl, 0x2b
jmp 0x4074e3
cmp byte [esp + 0x32], 0
sete cl
dec cl
and cl, 0x20
mov byte [esp + 0xf], cl
cmp ch, 4
jne 0x4074f5
test edi, edi
je 0x4074f5
dec edi
mov dword [esp + 0x24], edi
movsd xmm3, qword [esp + 0x98]
mov eax, edi
movsd xmm7, qword [esp + 0x78]
test edi, edi
jle 0x407513
dec eax
mulsd xmm3, xmm7
test eax, eax
jg 0x40750a
cmp ch, 2
jne 0x407525
movaps xmm0, xmm3
addsd xmm1, xmm0
movsd qword [esp + 0x48], xmm1
xor edx, edx
movaps xmm0, xmm1
mov dword [esp + 0x1c], edx
call fcn.00408744
test eax, eax
je 0x407544
push 3
mov edi, 0x475b80
pop esi
jmp 0x407b44
comisd xmm1, xmm2
jbe 0x407690
movsd xmm4, qword [esp + 0xa8]
mov eax, 0x15e
comisd xmm1, xmm4
movsd xmm5, qword [esp + 0xa0]
movaps xmm2, xmm5
jb 0x40758c
push 0x64
pop esi
cmp edx, eax
jg 0x407588
mulsd xmm2, xmm4
add edx, esi
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x407571
mov dword [esp + 0x1c], edx
movsd xmm4, qword [esp + 0xb0]
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jb 0x4075ba
cmp edx, eax
jg 0x4075b6
movaps xmm2, xmm0
add edx, 0x40
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x4075a2
mov dword [esp + 0x1c], edx
movsd xmm6, qword [esp + 0xb8]
movaps xmm0, xmm2
mulsd xmm0, xmm6
comisd xmm1, xmm0
jb 0x4075e8
cmp edx, eax
jg 0x4075e4
movaps xmm2, xmm0
add edx, 8
mulsd xmm0, xmm6
comisd xmm1, xmm0
jae 0x4075d0
mov dword [esp + 0x1c], edx
movsd xmm4, qword [esp + 0x68]
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jb 0x407611
cmp edx, eax
jg 0x40760d
movaps xmm2, xmm0
inc edx
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x4075fb
mov dword [esp + 0x1c], edx
divsd xmm1, xmm2
movsd xmm0, qword [esp + 0xc0]
comisd xmm0, xmm1
movsd qword [esp + 0x48], xmm1
jbe 0x407641
mulsd xmm1, xmm6
sub edx, 8
comisd xmm0, xmm1
ja 0x40762a
mov dword [esp + 0x1c], edx
movsd qword [esp + 0x48], xmm1
comisd xmm5, xmm1
jbe 0x40765c
mulsd xmm1, xmm4
dec edx
comisd xmm5, xmm1
ja 0x407647
mov dword [esp + 0x1c], edx
movsd qword [esp + 0x48], xmm1
cmp edx, eax
jle 0x407696
cmp cl, 0x2d
jne 0x40766c
mov edi, str._Inf
jmp 0x40767b
mov edi, str.Inf
cmp cl, 0x2b
je 0x40767b
mov edi, 0x475b94
mov esi, edi
inc esi
cmp byte [esi], 0
jne 0x40767d
sub esi, edi
and esi, 0x3fffffff
jmp 0x407b44
movsd xmm4, qword [esp + 0x68]
lea esi, [esp + 0xc8]
cmp ch, 2
je 0x4076c1
addsd xmm1, xmm3
comisd xmm1, xmm4
movsd qword [esp + 0x48], xmm1
jb 0x4076c1
mulsd xmm1, xmm7
inc edx
mov dword [esp + 0x1c], edx
movsd qword [esp + 0x48], xmm1
cmp ch, 4
jne 0x4076eb
cmp byte [esp + 0x22], 0
sete byte [esp + 0x17]
cmp edx, 0xfffffffc
jl 0x4076e3
cmp edx, edi
jg 0x4076e3
sub edi, edx
mov al, 2
mov dword [esp + 0x24], edi
jmp 0x4076e5
mov al, 3
mov byte [esp + 0xd], al
jmp 0x4076f7
mov al, byte [esp + 0xe]
mov byte [esp + 0x17], al
mov al, byte [esp + 0xd]
xor ecx, ecx
cmp al, 3
cmovne ecx, edx
xor eax, eax
test ecx, ecx
mov dword [esp + 0x60], ecx
cmovg eax, ecx
add eax, edi
add eax, dword [esp + 0x18]
cmp eax, 0x37
jle 0x407730
add eax, 0xf
push eax
call fcn.004067d8
mov dword [esp + 0x3c], eax
mov esi, eax
pop ecx
test eax, eax
je 0x407c34
mov ecx, dword [esp + 0x60]
movzx eax, byte [esp + 0xe]
mov edi, esi
imul edx, eax, 0xa
mov ah, byte [esp + 0xf]
add edx, 0x10
cmp dword [esp + 0x24], 0
mov dword [esp + 0x58], edx
setg al
or al, byte [esp + 0xe]
or al, byte [esp + 0x22]
mov byte [esp + 0x23], al
test ah, ah
je 0x407760
mov byte [esi], ah
inc esi
test ecx, ecx
jns 0x40776a
mov byte [esi], 0x30
inc esi
jmp 0x4077ab
movsd xmm1, qword [esp + 0x48]
movsd xmm2, qword [esp + 0x68]
test edx, edx
jg 0x40777e
mov al, 0x30
jmp 0x407795
cvttsd2si eax, xmm1
dec edx
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, xmm2
mov byte [esi], al
inc esi
sub ecx, 1
jns 0x407776
mov al, byte [esp + 0x23]
mov dword [esp + 0x58], edx
movsd qword [esp + 0x48], xmm1
test al, al
je 0x4077b3
mov byte [esi], 0x2e
inc esi
lea eax, [ecx + 1]
test eax, eax
jns 0x4077d8
neg eax
sub dword [esp + 0x24], eax
push eax
push 0x30
push esi
mov dword [esp + 0x6c], eax
call fcn.00456430
mov edx, dword [esp + 0x64]
add esp, 0xc
add esi, dword [esp + 0x60]
mov ecx, dword [esp + 0x24]
jmp 0x40780f
dec ecx
test edx, edx
jg 0x4077e7
mov al, 0x30
jmp 0x40780c
movsd xmm1, qword [esp + 0x48]
dec edx
cvttsd2si eax, xmm1
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, qword [esp + 0x68]
movsd qword [esp + 0x48], xmm1
mov byte [esi], al
inc esi
test ecx, ecx
jg 0x4077de
cmp byte [esp + 0x17], 0
je 0x407844
cmp byte [esp + 0x23], 0
je 0x407844
jmp 0x407827
dec esi
mov byte [esi], 0
cmp byte [esi - 1], 0x30
je 0x407823
cmp byte [esi - 1], 0x2e
jne 0x407844
cmp byte [esp + 0xe], 0
je 0x407840
mov byte [esi], 0x30
inc esi
jmp 0x407844
dec esi
mov byte [esi], 0
cmp byte [esp + 0xd], 3
jne 0x4078a5
mov eax, dword [esp + 0x3c]
lea ecx, [esi + 2]
push 0x64
movzx eax, byte [eax + 4]
mov al, byte [eax + str.0123456789ABCDEF0123456789abcdef]
mov byte [esi], al
mov eax, dword [esp + 0x20]
mov edx, eax
neg edx
test eax, eax
cmovns edx, eax
sets al
lea eax, [eax*2 + 0x2b]
mov byte [esi + 1], al
mov esi, ecx
pop eax
cmp edx, eax
jl 0x407890
mov eax, edx
push 0x64
cdq
pop esi
idiv esi
lea esi, [ecx + 1]
add al, 0x30
mov byte [ecx], al
mov eax, edx
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
mov byte [esi], 0
sub esi, edi
cmp byte [esp + 0x33], 0
je 0x407b44
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
test cl, cl
jne 0x407b4c
cmp esi, eax
jge 0x407b4c
mov ecx, eax
sub ecx, esi
mov esi, eax
mov edx, esi
cmp esi, ecx
jl 0x4078ec
mov esi, edi
sub esi, ecx
mov al, byte [esi + edx]
mov byte [edx + edi], al
dec edx
cmp edx, ecx
jge 0x4078dd
mov esi, dword [esp + 0x18]
xor eax, eax
cmp byte [esp + 0xf], al
setne al
test ecx, ecx
je 0x407b44
push ecx
add eax, edi
push 0x30
push eax
call fcn.00456430
add esp, 0xc
jmp 0x407b44
cmp byte [esp + 0xc], 0
jne 0x407be3
mov eax, dword [esp + 0x34]
mov ecx, dword [edx]
add dword [esp + 0x10], 4
mov eax, dword [eax + 0xc]
mov dword [ecx], eax
jmp 0x407be3
xor eax, eax
mov byte [esp + 0xc8], 0x25
lea edi, [esp + 0xc8]
lea esi, [eax + 1]
jmp 0x407b44
cmp byte [esp + 0xc], 0
je 0x407966
mov ecx, dword [esp + 0x44]
call fcn.00406e4d
test eax, eax
je 0x407962
movsx eax, byte [eax]
jmp 0x40796d
xor eax, eax
jmp 0x40796d
add dword [esp + 0x10], 4
mov eax, dword [edx]
mov esi, dword [esp + 0x24]
mov cl, al
xor eax, eax
mov byte [esp + 0xc8], cl
test esi, esi
js 0x40799c
inc eax
cmp esi, eax
jle 0x40799f
lea eax, [esi - 1]
push eax
push ecx
lea eax, [esp + 0xd1]
push eax
call fcn.00456430
add esp, 0xc
jmp 0x40799f
lea esi, [eax + 1]
lea edi, [esp + 0xc8]
jmp 0x407b44
mov cl, byte [esp + 0xc]
test cl, cl
je 0x4079c8
mov ecx, dword [esp + 0x44]
call fcn.00406e4d
mov ch, byte [esp + 0xd]
mov edi, eax
mov cl, byte [esp + 0xc]
jmp 0x4079cf
add dword [esp + 0x10], 4
mov edi, dword [edx]
test edi, edi
jne 0x4079da
mov edi, 0x475072
jmp 0x4079ec
cmp ch, 7
jne 0x4079ec
mov eax, dword [esp + 0x38]
test cl, cl
cmove eax, edi
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x24]
test eax, eax
js 0x407a12
xor esi, esi
test eax, eax
jle 0x407b44
cmp byte [esi + edi], 0
je 0x407b44
inc esi
cmp esi, eax
jl 0x4079fe
jmp 0x407b44
mov esi, edi
test edi, edi
je 0x407b44
cmp byte [edi], 0
je 0x407683
inc esi
cmp byte [esi], 0
jne 0x407a25
jmp 0x407683
push 0x27
pop eax
push 0x22
cmp ch, 0xf
pop esi
cmove eax, esi
cmp byte [esp + 0xc], 0
mov dword [esp + 0x1c], eax
je 0x407a56
mov ecx, dword [esp + 0x44]
call fcn.00406e4d
mov ch, byte [esp + 0xd]
jmp 0x407a5d
add dword [esp + 0x10], 4
mov eax, dword [edx]
mov dword [esp + 0x3c], eax
mov edi, eax
mov dword [esp + 0x60], edi
test eax, eax
jne 0x407a7f
cmp ch, 0xb
mov eax, str.NULL
mov edx, str._NULL_
cmovne eax, edx
mov dword [esp + 0x3c], eax
xor edx, edx
xor esi, esi
mov dword [esp + 0x40], edx
cmp dword [esp + 0x24], edx
je 0x407ab6
mov edi, dword [esp + 0x24]
mov cl, byte [edx + eax]
test cl, cl
je 0x407aae
inc edx
lea eax, [esi + 1]
cmp cl, byte [esp + 0x1c]
cmovne eax, esi
mov esi, eax
mov eax, dword [esp + 0x3c]
sub edi, 1
jne 0x407a91
mov edi, dword [esp + 0x60]
mov dword [esp + 0x40], edx
test edi, edi
je 0x407ac4
cmp ch, 0xb
jne 0x407ac4
xor eax, eax
inc eax
jmp 0x407ac6
xor eax, eax
mov dword [esp + 0x54], eax
lea eax, [eax*2 + 1]
add eax, edx
add eax, esi
cmp eax, 0x46
jle 0x407af5
push eax
call fcn.004067d8
mov dword [esp + 0x3c], eax
mov edi, eax
pop ecx
test eax, eax
je 0x407c34
mov edx, dword [esp + 0x40]
jmp 0x407afc
lea edi, [esp + 0xc8]
xor esi, esi
cmp dword [esp + 0x54], esi
je 0x407b0f
mov eax, dword [esp + 0x1c]
mov byte [edi], al
xor eax, eax
lea esi, [eax + 1]
xor eax, eax
test edx, edx
jle 0x407b31
mov ecx, dword [esp + 0x3c]
mov dl, byte [eax + ecx]
mov byte [esi + edi], dl
inc esi
cmp dl, byte [esp + 0x1c]
jne 0x407b2a
mov byte [esi + edi], dl
inc esi
inc eax
cmp eax, dword [esp + 0x40]
jl 0x407b19
cmp dword [esp + 0x54], 0
je 0x407b40
mov eax, dword [esp + 0x1c]
mov byte [esi + edi], al
inc esi
mov byte [esi + edi], 0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
sub eax, esi
mov dword [esp + 0x18], eax
test eax, eax
jle 0x407be9
test cl, cl
jne 0x407be9
mov ecx, dword [esp + 0x34]
mov edx, eax
call fcn.00407d5e
jmp 0x407be9
add dword [esp + 0x10], 4
mov edx, dword [edx]
test edx, edx
je 0x407be3
cmp dword [edx + 4], 0
je 0x407be3
push dword [edx + 4]
mov edx, dword [edx]
mov ecx, dword [esp + 0x38]
call fcn.00407d8c
pop ecx
jmp 0x407be3
mov ecx, dword [esp + 0x10]
lea eax, [ecx + 8]
imul esi, dword [eax - 4], 0x50
mov dword [esp + 0x58], eax
mov eax, dword [ecx]
mov dword [esp + 0x60], eax
mov edx, dword [esi + eax + 0xc]
test edx, edx
je 0x407bce
mov ecx, dword [esp + 0x34]
call fcn.00407dd6
mov ecx, dword [esp + 0x34]
xor eax, eax
inc eax
mov edx, 0x475ba8
push eax
call fcn.00407d8c
mov eax, dword [esp + 0x64]
pop ecx
mov edx, dword [esi + eax + 0x10]
mov ecx, dword [esp + 0x34]
call fcn.00407dd6
mov eax, dword [esp + 0x58]
mov dword [esp + 0x10], eax
xor esi, esi
and dword [esp + 0x18], esi
push esi
mov esi, dword [esp + 0x38]
mov edx, edi
mov ecx, esi
call fcn.00407d8c
mov eax, dword [esp + 0x1c]
pop ecx
test eax, eax
jle 0x407c10
cmp byte [esp + 0x28], 0
je 0x407c10
mov edx, eax
mov ecx, esi
call fcn.00407d5e
mov eax, dword [esp + 0x38]
test eax, eax
je 0x407c1f
push eax
call fcn.004069f8
pop ecx
mov ecx, dword [esp + 0x2c]
inc ecx
movsx eax, byte [ecx]
test eax, eax
je case.default.0x4071e9
mov edx, dword [esp + 0x10]
jmp 0x406f76
mov eax, dword [esp + 0x34]
xor ecx, ecx
inc ecx
and dword [eax + 0x10], 0
mov byte [eax + 0x19], cl
jmp case.default.0x4071e9
mov ecx, dword [esp + 0x34]
xor eax, eax
inc eax
mov edx, 0x475b7c
push eax
call fcn.00407d8c
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret