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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x134
mov eax, dword [0x540024]
xor eax, esp
mov dword [esp + 0x130], eax
mov edx, dword [ebp + 8]
xor eax, eax
and dword [esp + 0x48], eax
mov ecx, dword [ebp + 0xc]
push ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
xor edi, edi
mov dword [esp + 0x38], edx
test byte [edx + 0x15], 2
mov dword [esp + 0x24], esi
mov dword [esp + 0x60], eax
mov dword [esp + 0x30], edi
je 0x40c208
mov eax, dword [esi]
add esi, 4
mov dword [esp + 0x24], esi
mov dword [esp + 0x54], eax
mov byte [esp + 0x13], 1
jmp 0x40c20c
mov byte [esp + 0x13], al
movsx eax, byte [ecx]
test eax, eax
je case.default.0x40c654
movsd xmm0, qword [0x53aa50]
movsd qword [esp + 0x90], xmm0
xorps xmm0, xmm0
movsd qword [esp + 0x88], xmm0
movsd xmm0, qword [0x53a868]
movsd qword [esp + 0xa8], xmm0
movsd xmm0, qword [0x53a858]
movsd qword [esp + 0xb0], xmm0
movsd xmm0, qword [0x53a8e8]
movsd qword [esp + 0xb8], xmm0
movsd xmm0, qword [0x53a9d8]
movsd qword [esp + 0xc0], xmm0
movsd xmm0, qword [0x53a998]
movsd qword [esp + 0xc8], xmm0
movsd xmm0, qword [0x53a8f8]
movsd qword [esp + 0x78], xmm0
movsd xmm0, qword [0x53a878]
movsd qword [esp + 0xd0], xmm0
movsd xmm0, qword [0x53a970]
movsd qword [esp + 0xd8], xmm0
movsd xmm0, qword [0x53a8c8]
mov dword [esp + 0x80], 0x533518
mov dword [esp + 0x70], 6
mov dword [esp + 0x84], 0x80000000
mov dword [esp + 0x58], 0xa
mov dword [esp + 0x5c], 3
mov dword [esp + 0x74], 0x15e
mov dword [esp + 0x6c], 0x64
movsd qword [esp + 0xe0], xmm0
cmp eax, 0x25
je 0x40c342
mov edi, ecx
mov dword [esp + 0x30], edi
inc ecx
mov al, byte [ecx]
test al, al
je 0x40c31e
cmp al, 0x25
jne 0x40c313
mov eax, ecx
mov dword [esp + 0x14], ecx
sub eax, edi
push eax
push edi
push edx
call fcn.0040d5d1
mov ecx, dword [esp + 0x20]
add esp, 0xc
cmp byte [ecx], 0
je case.default.0x40c654
mov edx, dword [esp + 0x38]
inc ecx
mov dword [esp + 0x14], ecx
movsx ecx, byte [ecx]
test ecx, ecx
je 0x40d3e8
xor eax, eax
or dword [esp + 0x2c], 0xffffffff
mov dl, al
mov byte [esp + 0x3f], al
mov byte [esp + 0x1a], al
mov byte [esp + 0x2b], al
mov byte [esp + 0x1b], al
mov byte [esp + 0x12], al
mov byte [esp + 0x10], al
mov dword [esp + 0x1c], eax
mov byte [esp + 0x37], al
mov eax, dword [esp + 0x14]
mov byte [esp + 0x11], dl
cmp ecx, 0x31
jg 0x40c539
je 0x40c571
cmp ecx, 0x2b
jg 0x40c457
je 0x40c44d
mov eax, ecx
sub eax, 0x20
je 0x40c446
sub eax, 1
je 0x40c43f
dec eax
sub eax, 1
je 0x40c431
sub eax, 7
jne 0x40c604
cmp byte [esp + 0x13], al
je 0x40c3db
mov ecx, dword [esp + 0x54]
call fcn.0040c108
mov edx, eax
mov dword [esp + 0x1c], eax
jmp 0x40c3e8
mov edx, dword [esi]
add esi, 4
mov dword [esp + 0x24], esi
mov dword [esp + 0x1c], edx
test edx, edx
jns 0x40c404
mov ecx, edx
mov byte [esp + 0x10], 1
neg ecx
xor eax, eax
cmp edx, 0x80000001
cmovge eax, ecx
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x14]
mov al, byte [edx + 1]
movsx ecx, al
cmp al, 0x2e
je 0x40c424
cmp al, 0x6c
je 0x40c424
lea eax, [edx + 1]
mov dl, 1
mov byte [esp + 0x11], dl
jmp 0x40c5c2
mov dl, byte [esp + 0x11]
mov eax, dword [esp + 0x14]
jmp 0x40c5c6
mov byte [esp + 0x2b], 1
mov eax, dword [esp + 0x14]
jmp 0x40c5ca
mov byte [esp + 0x1a], 1
jmp 0x40c436
mov byte [esp + 0x12], 0x20
jmp 0x40c436
mov byte [esp + 0x12], 0x2b
jmp 0x40c5ca
mov eax, ecx
sub eax, 0x2c
je 0x40c52f
sub eax, 1
je 0x40c525
sub eax, 1
je 0x40c481
dec eax
sub eax, 1
jne 0x40c604
mov byte [esp + 0x3f], 1
jmp 0x40c436
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
movsx ecx, byte [eax]
cmp ecx, 0x2a
jne 0x40c4e6
cmp byte [esp + 0x13], 0
je 0x40c4b2
mov ecx, dword [esp + 0x54]
call fcn.0040c108
mov dl, byte [esp + 0x11]
mov esi, eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x14]
jmp 0x40c4c0
add esi, 4
mov dword [esp + 0x24], esi
mov esi, dword [esi - 4]
mov dword [esp + 0x2c], esi
test esi, esi
jns 0x40c4dc
mov ecx, esi
or eax, 0xffffffff
neg ecx
cmp esi, 0x80000001
cmovge eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
movsx ecx, byte [eax]
jmp 0x40c512
xor esi, esi
jmp 0x40c503
cmp ecx, 0x39
ja 0x40c508
imul eax, esi, 0xa
lea esi, [ecx - 0x30]
add esi, eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
movsx ecx, byte [eax]
cmp ecx, 0x30
jge 0x40c4ea
and esi, 0x7fffffff
mov dword [esp + 0x2c], esi
cmp ecx, 0x6c
jne 0x40c604
mov esi, dword [esp + 0x24]
dec eax
jmp 0x40c5ca
mov byte [esp + 0x10], 1
jmp 0x40c436
mov byte [esp + 0x1b], 0x2c
jmp 0x40c436
cmp ecx, 0x36
jg 0x40c55c
je 0x40c571
mov eax, ecx
sub eax, 0x32
je 0x40c56d
sub eax, 1
je 0x40c56d
sub eax, 1
je 0x40c56d
sub eax, 1
jne 0x40c604
jmp 0x40c56d
mov eax, ecx
sub eax, 0x37
je 0x40c56d
sub eax, 1
je 0x40c56d
sub eax, 1
jne 0x40c5dc
mov eax, dword [esp + 0x14]
add ecx, 0xffffffd0
inc eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], eax
movsx ecx, byte [eax]
cmp ecx, 0x30
jl 0x40c5af
mov esi, dword [esp + 0x1c]
cmp ecx, 0x39
ja 0x40c5a7
imul eax, esi, 0xa
lea esi, [ecx - 0x30]
add esi, eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
movsx ecx, byte [eax]
cmp ecx, 0x30
jge 0x40c589
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x24]
and dword [esp + 0x1c], 0x7fffffff
cmp ecx, 0x2e
je 0x40c5c1
cmp ecx, 0x6c
jne 0x40c604
dec eax
mov dword [esp + 0x14], eax
test dl, dl
jne 0x40c604
inc eax
mov dword [esp + 0x14], eax
movsx ecx, byte [eax]
test ecx, ecx
jne 0x40c383
jmp 0x40c604
sub eax, 0x33
jne 0x40c604
mov eax, dword [esp + 0x14]
inc eax
mov byte [esp + 0x37], 1
mov dword [esp + 0x14], eax
movsx ecx, byte [eax]
cmp ecx, 0x6c
jne 0x40c604
inc eax
mov byte [esp + 0x37], 2
mov dword [esp + 0x14], eax
movsx ecx, byte [eax]
mov edx, dword [esp + 0x80]
xor esi, esi
mov dword [esp + 0x44], edx
mov byte [esp + 0x11], 0x11
movsx eax, byte [edx]
cmp ecx, eax
je 0x40c634
add edx, dword [esp + 0x70]
inc esi
cmp edx, 0x5335a2
jl 0x40c616
mov cl, byte [esp + 0x11]
mov edx, dword [esp + 0x44]
jmp 0x40c648
imul edx, esi, 6
add edx, 0x533518
mov dword [esp + 0x44], edx
mov cl, byte [edx + 3]
mov byte [esp + 0x11], cl
movzx eax, cl
cmp eax, 0x10
ja case.default.0x40c654
jmp dword [eax*4 + 0x40d410]
mov byte [esp + 0x37], 1
mov byte [esp + 0x1b], 0
test byte [edx + 2], 1
je 0x40c6dc
cmp byte [esp + 0x13], 0
je 0x40c67d
mov ecx, dword [esp + 0x54]
call fcn.0040c108
jmp 0x40c6aa
mov al, byte [esp + 0x37]
test al, al
je 0x40c69b
cmp al, 2
mov eax, dword [esp + 0x24]
jne 0x40c69f
mov edi, dword [eax]
add eax, 8
mov dword [esp + 0x24], eax
mov esi, dword [eax - 4]
jmp 0x40c6ae
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x24], eax
mov eax, dword [eax - 4]
cdq
mov edi, eax
mov esi, edx
test esi, esi
jg 0x40c6d6
jl 0x40c6b8
test edi, edi
jae 0x40c6d6
test edi, edi
jne 0x40c6cb
mov eax, dword [esp + 0x84]
cmp esi, eax
jne 0x40c6cb
mov esi, eax
jmp 0x40c6d2
neg edi
adc esi, 0
neg esi
mov cl, 0x2d
jmp 0x40c71d
mov cl, byte [esp + 0x12]
jmp 0x40c721
cmp byte [esp + 0x13], 0
je 0x40c6f2
mov ecx, dword [esp + 0x54]
call fcn.0040c108
mov edi, eax
mov esi, edx
jmp 0x40c71b
mov al, byte [esp + 0x37]
test al, al
je 0x40c70c
cmp al, 2
mov eax, dword [esp + 0x24]
jne 0x40c710
mov edi, dword [eax]
add eax, 8
mov esi, dword [eax - 4]
jmp 0x40c717
mov eax, dword [esp + 0x24]
mov edi, dword [eax]
add eax, 4
xor esi, esi
mov dword [esp + 0x24], eax
xor cl, cl
mov byte [esp + 0x12], cl
mov eax, edi
or eax, esi
jne 0x40c72b
mov byte [esp + 0x2b], al
cmp byte [esp + 0x3f], 0
je 0x40c74e
xor eax, eax
test cl, cl
mov ecx, dword [esp + 0x1c]
setne al
sub ecx, eax
mov eax, dword [esp + 0x2c]
cmp eax, ecx
cmovl eax, ecx
mov dword [esp + 0x2c], eax
jmp 0x40c752
mov eax, dword [esp + 0x2c]
cmp eax, 0x25
jge 0x40c76b
push 0x46
pop eax
lea ecx, [esp + 0xf0]
mov dword [esp + 0x20], eax
mov dword [esp + 0x40], ecx
jmp 0x40c7b7
cdq
add eax, dword [esp + 0x58]
mov ecx, edx
mov dword [esp + 0x20], eax
adc ecx, 0
cmp byte [esp + 0x1b], 0
je 0x40c794
mov eax, dword [esp + 0x2c]
cdq
idiv dword [esp + 0x5c]
cdq
add dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
adc ecx, edx
push ecx
mov ecx, dword [esp + 0x3c]
push eax
call fcn.0040c14c
mov dword [esp + 0x68], eax
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x40], ecx
test eax, eax
je case.default.0x40c654
mov eax, dword [esp + 0x20]
dec eax
add eax, ecx
cmp byte [esp + 0x11], 0xf
mov dword [esp + 0x30], eax
jne 0x40c824
push 0
push dword [esp + 0x5c]
push esi
push edi
call fcn.0047b250
mov dword [esp + 0x64], eax
cmp eax, 4
jge 0x40c7fe
push 0
push dword [esp + 0x5c]
push esi
push edi
call fcn.0047b1e0
push 0
push dword [esp + 0x5c]
push edx
push eax
call fcn.0047b250
cmp eax, 1
jne 0x40c802
test edx, edx
jne 0x40c802
xor ecx, ecx
jmp 0x40c806
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x30]
mov al, byte [ecx*2 + 0x53073d]
mov byte [edx - 1], al
sub edx, 2
mov al, byte [ecx*2 + str.thstndrd]
mov dword [esp + 0x30], edx
mov byte [edx], al
mov ecx, dword [esp + 0x44]
movzx eax, byte [ecx + 4]
add eax, str.0123456789ABCDEF0123456789abcdef
mov dword [esp + 0x48], eax
movzx eax, byte [ecx + 1]
cdq
mov ecx, edx
mov dword [esp + 0x64], eax
mov edx, dword [esp + 0x30]
mov dword [esp + 0x68], ecx
push ebx
push ecx
push eax
push esi
dec edx
push edi
mov dword [esp + 0x44], edx
call fcn.00468410
mov dword [esp + 0xf0], ebx
pop ebx
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x30]
mov al, byte [ecx + eax]
mov ecx, dword [esp + 0x68]
mov byte [edx], al
mov eax, dword [esp + 0x64]
test esi, esi
ja 0x40c848
jb 0x40c882
test edi, edi
jne 0x40c848
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0x40]
mov eax, esi
mov edi, dword [esp + 0x30]
sub eax, edi
lea ecx, [edx - 1]
add ecx, eax
mov eax, dword [esp + 0x2c]
cmp ecx, eax
jge 0x40c8b2
sub eax, ecx
mov ecx, dword [esp + 0x2c]
dec edi
mov byte [edi], 0x30
sub eax, 1
jne 0x40c8a5
mov dword [esp + 0x30], edi
cmp byte [esp + 0x1b], 0
je 0x40c8f6
lea eax, [ecx - 1]
cdq
idiv dword [esp + 0x5c]
mov esi, eax
inc edx
sub edi, esi
xor ecx, ecx
mov dword [esp + 0x30], edi
test esi, esi
jle 0x40c8ee
lea eax, [esi + ecx]
mov al, byte [eax + edi]
mov byte [ecx + edi], al
sub edx, 1
jne 0x40c8eb
mov al, byte [esp + 0x1b]
inc ecx
mov edx, dword [esp + 0x5c]
dec esi
mov byte [ecx + edi], al
inc ecx
jmp 0x40c8cc
mov esi, dword [esp + 0x40]
mov edx, dword [esp + 0x20]
mov al, byte [esp + 0x12]
test al, al
je 0x40c905
dec edi
mov dword [esp + 0x30], edi
mov byte [edi], al
cmp byte [esp + 0x2b], 0
je 0x40c933
mov eax, dword [esp + 0x44]
mov al, byte [eax + 5]
test al, al
je 0x40c933
movzx eax, al
add eax, 0x52f254
mov cl, byte [eax]
test cl, cl
je 0x40c933
dec edi
inc eax
mov byte [edi], cl
mov cl, byte [eax]
test cl, cl
jne 0x40c925
mov dword [esp + 0x30], edi
sub esi, edi
dec esi
add esi, edx
jmp 0x40d2c0
cmp byte [esp + 0x13], 0
je 0x40c974
mov esi, dword [esp + 0x54]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jg 0x40c95a
movsd xmm1, qword [esp + 0x88]
jmp 0x40c984
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
call fcn.0042270c
mov cl, byte [esp + 0x11]
movaps xmm1, xmm0
jmp 0x40c984
mov eax, dword [esp + 0x24]
add eax, 8
mov dword [esp + 0x24], eax
movsd xmm1, qword [eax - 8]
mov esi, dword [esp + 0x2c]
test esi, esi
movsd xmm2, qword [esp + 0x88]
cmovs esi, dword [esp + 0x70]
comisd xmm2, xmm1
mov dword [esp + 0x2c], esi
movsd qword [esp + 0x48], xmm1
jbe 0x40c9bb
xorps xmm1, xmmword [esp + 0x90]
movsd qword [esp + 0x48], xmm1
mov byte [esp + 0x12], 0x2d
cmp cl, 3
jne 0x40c9c9
test esi, esi
je 0x40c9c9
dec esi
mov dword [esp + 0x2c], esi
mov edi, dword [esp + 0x58]
mov ecx, esi
and ecx, 0xfff
xor edx, edx
mov eax, ecx
div edi
movsd xmm3, qword [edx*8 + 0x534210]
cmp ecx, edi
jb 0x40ca00
movsd xmm0, qword [esp + 0xa8]
mov eax, ecx
xor edx, edx
div edi
mulsd xmm3, xmm0
sub eax, 1
jne 0x40c9f7
cmp byte [esp + 0x11], 1
jne 0x40ca47
movsd qword [esp + 0x48], xmm1
mov eax, dword [esp + 0x4c]
shr eax, 0x14
and eax, 0x7ff
sub eax, 0x3ff
cdq
idiv dword [esp + 0x5c]
add eax, esi
cmp eax, 0xf
jge 0x40ca3a
movaps xmm0, xmm1
mulsd xmm0, qword [esp + 0xb0]
addsd xmm3, xmm0
movaps xmm0, xmm3
addsd xmm1, xmm0
movsd qword [esp + 0x48], xmm1
xor edi, edi
movaps xmm0, xmm1
mov dword [esp + 0x20], edi
call fcn.0040e20f
test eax, eax
je 0x40ca6b
mov esi, dword [esp + 0x5c]
mov edi, 0x534f24
mov dword [esp + 0x30], edi
jmp 0x40d2c0
comisd xmm1, xmm2
jbe 0x40cb95
movsd xmm4, qword [esp + 0xc0]
comisd xmm1, xmm4
mov ecx, dword [esp + 0x74]
movsd xmm5, qword [esp + 0xb8]
movaps xmm2, xmm5
jb 0x40cab3
mov eax, dword [esp + 0x6c]
cmp edi, ecx
jg 0x40caaf
mulsd xmm2, xmm4
add edi, eax
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x40ca98
mov dword [esp + 0x20], edi
movsd xmm4, qword [esp + 0xc8]
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jb 0x40cae4
mov eax, dword [esp + 0x58]
cmp edi, ecx
jg 0x40cae0
movaps xmm2, xmm0
add edi, eax
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x40cacd
mov dword [esp + 0x20], edi
movsd xmm4, qword [esp + 0x78]
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jb 0x40cb0d
cmp edi, ecx
jg 0x40cb09
movaps xmm2, xmm0
inc edi
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x40caf7
mov dword [esp + 0x20], edi
divsd xmm1, xmm2
movsd xmm0, qword [esp + 0xd0]
comisd xmm0, xmm1
movsd qword [esp + 0x48], xmm1
jbe 0x40cb46
movsd xmm2, qword [esp + 0xd8]
mulsd xmm1, xmm2
sub edi, 8
comisd xmm0, xmm1
ja 0x40cb2f
mov dword [esp + 0x20], edi
movsd qword [esp + 0x48], xmm1
comisd xmm5, xmm1
jbe 0x40cb61
mulsd xmm1, xmm4
dec edi
comisd xmm5, xmm1
ja 0x40cb4c
mov dword [esp + 0x20], edi
movsd qword [esp + 0x48], xmm1
cmp edi, ecx
jle 0x40cb9b
mov cl, byte [esp + 0x12]
lea edi, [esp + 0xf0]
xor eax, eax
mov byte [esp + 0xf0], cl
test cl, cl
mov dword [esp + 0x30], edi
setne al
mov dword [esp + eax + 0xf0], 0x666e49
lea esi, [eax + 3]
jmp 0x40d2c0
movsd xmm4, qword [esp + 0x78]
mov al, byte [esp + 0x11]
lea esi, [esp + 0xf0]
cmp al, 1
je 0x40cbfb
addsd xmm1, xmm3
comisd xmm1, xmm4
movsd qword [esp + 0x48], xmm1
jb 0x40cbce
mulsd xmm1, qword [esp + 0xe0]
inc edi
mov dword [esp + 0x20], edi
movsd qword [esp + 0x48], xmm1
cmp al, 3
jne 0x40cbfb
cmp byte [esp + 0x2b], 0
sete byte [esp + 0x1b]
cmp edi, 0xfffffffc
jl 0x40cbf3
mov eax, dword [esp + 0x2c]
cmp edi, eax
jg 0x40cbf3
sub eax, edi
mov dword [esp + 0x2c], eax
mov al, 1
jmp 0x40cbf5
mov al, 2
mov byte [esp + 0x11], al
jmp 0x40cc03
mov dl, byte [esp + 0x1a]
mov byte [esp + 0x1b], dl
xor edi, edi
cmp al, 2
cmovne edi, dword [esp + 0x20]
xor eax, eax
test edi, edi
cmovg eax, edi
cdq
mov ecx, eax
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x2c]
cdq
add ecx, eax
mov eax, dword [esp + 0x1c]
adc dword [esp + 0x40], edx
cdq
add ecx, eax
mov eax, dword [esp + 0x40]
adc eax, edx
add ecx, 0xf
adc eax, 0
js 0x40cc5c
jg 0x40cc41
cmp ecx, 0x46
jbe 0x40cc5c
push eax
push ecx
mov ecx, dword [esp + 0x40]
call fcn.0040c14c
mov dword [esp + 0x68], eax
mov esi, eax
pop ecx
pop ecx
test eax, eax
je case.default.0x40c654
movzx eax, byte [esp + 0x1a]
mov dh, byte [esp + 0x12]
imul ecx, eax, 0xa
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x30], esi
add ecx, 0x10
test eax, eax
mov dword [esp + 0x68], ecx
setg dl
or dl, byte [esp + 0x1a]
or dl, byte [esp + 0x2b]
mov byte [esp + 0x2b], dl
test dh, dh
je 0x40cc8f
mov byte [esi], dh
inc esi
test edi, edi
jns 0x40cc99
mov byte [esi], 0x30
inc esi
jmp 0x40ccda
movsd xmm1, qword [esp + 0x48]
movsd xmm2, qword [esp + 0x78]
test ecx, ecx
jg 0x40ccad
mov al, 0x30
jmp 0x40ccc4
cvttsd2si eax, xmm1
dec ecx
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, xmm2
mov byte [esi], al
inc esi
sub edi, 1
jns 0x40cca5
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x68], ecx
movsd qword [esp + 0x48], xmm1
test dl, dl
je 0x40cce2
mov byte [esi], 0x2e
inc esi
add edi, 1
jns 0x40cd40
neg edi
push edi
push 0x30
push esi
call fcn.00469920
mov eax, dword [esp + 0x38]
add esp, 0xc
mov ecx, dword [esp + 0x68]
add esi, edi
mov dl, byte [esp + 0x2b]
sub eax, edi
jmp 0x40cd40
dec eax
mov dword [esp + 0x2c], eax
test ecx, ecx
jg 0x40cd14
mov al, 0x30
jmp 0x40cd39
movsd xmm1, qword [esp + 0x48]
dec ecx
cvttsd2si eax, xmm1
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, qword [esp + 0x78]
movsd qword [esp + 0x48], xmm1
mov byte [esi], al
inc esi
mov eax, dword [esp + 0x2c]
test eax, eax
jg 0x40cd07
cmp byte [esp + 0x1b], 0
je 0x40cd75
test dl, dl
je 0x40cd75
jmp 0x40cd56
mov esi, eax
mov byte [esi], 0
lea eax, [esi - 1]
cmp byte [eax], 0x30
je 0x40cd51
cmp byte [esi - 1], 0x2e
jne 0x40cd75
cmp byte [esp + 0x1a], 0
je 0x40cd71
mov byte [esi], 0x30
inc esi
jmp 0x40cd75
dec esi
mov byte [esi], 0
cmp byte [esp + 0x11], 2
jne 0x40cdd8
mov eax, dword [esp + 0x44]
lea edi, [esi + 2]
movzx eax, byte [eax + 4]
mov al, byte [eax + str.0123456789ABCDEF0123456789abcdef]
mov byte [esi], al
mov eax, dword [esp + 0x20]
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
cmp dword [esp + 0x20], 0
setl al
lea eax, [eax*2 + 0x2b]
mov byte [esi + 1], al
mov esi, edi
cmp ecx, dword [esp + 0x6c]
jl 0x40cdc4
mov eax, ecx
lea esi, [edi + 1]
cdq
idiv dword [esp + 0x6c]
add al, 0x30
mov ecx, edx
mov byte [edi], al
mov eax, ecx
cdq
idiv dword [esp + 0x58]
add al, 0x30
add dl, 0x30
mov byte [esi], al
mov byte [esi + 1], dl
add esi, 2
mov edi, dword [esp + 0x30]
mov cl, byte [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov byte [esi], 0
sub esi, edi
cmp byte [esp + 0x3f], 0
je 0x40d2c8
test cl, cl
jne 0x40d2c8
cmp esi, eax
jge 0x40d2c8
mov ecx, eax
sub ecx, esi
mov esi, eax
mov edx, esi
cmp esi, ecx
jl 0x40ce23
mov esi, edi
sub esi, ecx
mov al, byte [esi + edx]
mov byte [edx + edi], al
dec edx
cmp edx, ecx
jge 0x40ce14
mov esi, dword [esp + 0x1c]
xor eax, eax
cmp byte [esp + 0x12], al
setne al
test ecx, ecx
je 0x40d2c0
push ecx
add eax, edi
push 0x30
push eax
call fcn.00469920
add esp, 0xc
jmp 0x40d2c0
cmp byte [esp + 0x13], 0
jne 0x40d3a7
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x24], eax
mov ecx, dword [eax - 4]
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 0x10]
mov dword [ecx], eax
jmp 0x40d3a7
lea edi, [esp + 0xf0]
mov byte [esp + 0xf0], 0x25
xor esi, esi
mov dword [esp + 0x30], edi
inc esi
jmp 0x40d2c0
cmp byte [esp + 0x13], 0
je 0x40cef4
mov ecx, dword [esp + 0x54]
call fcn.0040c12a
xor esi, esi
mov edx, eax
inc esi
mov dword [esp + 0x20], esi
test edx, edx
je 0x40cee7
mov cl, byte [edx]
inc edx
mov byte [esp + 0xf0], cl
movsx ecx, cl
and ecx, 0xc0
cmp cl, 0xc0
jne 0x40cfb9
mov cl, byte [edx]
mov al, cl
and al, 0xc0
cmp al, 0x80
jne 0x40cfb9
mov byte [esp + esi + 0xf0], cl
inc esi
inc edx
mov dword [esp + 0x20], esi
cmp esi, 4
jl 0x40cec2
jmp 0x40cfb9
mov byte [esp + 0xf0], 0
jmp 0x40cfb9
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x24], eax
mov ecx, dword [eax - 4]
cmp ecx, 0x80
jae 0x40cf19
xor esi, esi
mov byte [esp + 0xf0], cl
inc esi
jmp 0x40cfb5
mov eax, ecx
cmp ecx, 0x800
jae 0x40cf42
shr eax, 6
and cl, 0x3f
and al, 0x1f
sub al, 0x40
add cl, 0x80
mov byte [esp + 0xf0], al
mov byte [esp + 0xf1], cl
push 2
jmp 0x40cfb4
mov dl, cl
and dl, 0x3f
add dl, 0x80
cmp ecx, 0x10000
jae 0x40cf7d
mov esi, dword [esp + 0x5c]
shr eax, 0xc
shr ecx, 6
and al, 0xf
sub al, 0x20
mov byte [esp + 0xf2], dl
and cl, 0x3f
mov byte [esp + 0xf0], al
add cl, 0x80
mov byte [esp + 0xf1], cl
jmp 0x40cfb5
shr eax, 0x12
and al, 7
mov byte [esp + 0xf3], dl
sub al, 0x10
mov byte [esp + 0xf0], al
mov eax, ecx
shr eax, 0xc
shr ecx, 6
and al, 0x3f
add al, 0x80
and cl, 0x3f
add cl, 0x80
mov byte [esp + 0xf1], al
mov byte [esp + 0xf2], cl
push 4
pop esi
mov dword [esp + 0x20], esi
mov edi, dword [esp + 0x2c]
cmp edi, 1
jle 0x40d00b
mov ecx, dword [esp + 0x1c]
sub ecx, edi
mov eax, ecx
inc ecx
mov dword [esp + 0x1c], ecx
cmp ecx, 1
jle 0x40cff0
cmp byte [esp + 0x10], 0
jne 0x40cff0
push 0x20
push eax
mov eax, dword [esp + 0x40]
push eax
call fcn.0040d558
add esp, 0xc
and dword [esp + 0x1c], 0
dec edi
push esi
lea eax, [esp + 0xf4]
push eax
push dword [esp + 0x40]
call fcn.0040d5d1
add esp, 0xc
sub edi, 1
jne 0x40cff1
lea edi, [esp + 0xf0]
mov dword [esp + 0x30], edi
jmp 0x40d291
cmp byte [esp + 0x13], 0
je 0x40d035
mov ecx, dword [esp + 0x54]
call fcn.0040c12a
mov edi, eax
mov dword [esp + 0x30], eax
mov cl, 5
jmp 0x40d047
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x24], eax
mov edi, dword [eax - 4]
mov dword [esp + 0x30], edi
test edi, edi
jne 0x40d056
mov edi, 0x534f28
mov dword [esp + 0x30], edi
jmp 0x40d0b4
cmp cl, 6
jne 0x40d0b4
mov esi, dword [esp + 0x38]
cmp dword [esi + 0x10], 0
jne 0x40d0b0
cmp dword [esi + 0xc], 0
je 0x40d0b0
cmp dword [esp + 0x1c], 0
jne 0x40d0b0
cmp dword [esp + 0x2c], 0
jge 0x40d0b0
cmp byte [esi + 0x14], 0
jne 0x40d0b0
mov ecx, dword [esi]
mov edx, edi
mov dword [esi + 4], edi
call fcn.0040baf9
mov ecx, edi
mov dword [esi + 8], eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40d093
or byte [esi + 0x15], 4
sub ecx, edx
and ecx, 0x7fffffff
mov dword [esi + 0x10], ecx
xor esi, esi
jmp 0x40d2c0
mov dword [esp + 0x60], edi
mov ecx, dword [esp + 0x2c]
test ecx, ecx
js 0x40d110
mov dl, byte [esp + 0x1a]
test dl, dl
je 0x40d0ee
mov esi, edi
jmp 0x40d0df
mov al, byte [esi]
dec ecx
test al, al
je 0x40d0e3
inc esi
cmp al, 0xc0
jb 0x40d0df
jmp 0x40d0d7
inc esi
mov al, byte [esi]
and al, 0xc0
cmp al, 0x80
je 0x40d0d6
test ecx, ecx
jg 0x40d0c8
sub esi, edi
mov dword [esp + 0x20], esi
jmp 0x40d291
xor esi, esi
test ecx, ecx
jle 0x40d2c0
cmp byte [esi + edi], 0
je 0x40d2c0
inc esi
mov dword [esp + 0x20], esi
cmp esi, ecx
jl 0x40d0f8
jmp 0x40d28d
mov esi, edi
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x40d115
sub esi, ecx
and esi, 0x7fffffff
mov dword [esp + 0x20], esi
jmp 0x40d289
push 0x27
pop eax
push 0x22
cmp cl, 0xe
pop edx
cmove eax, edx
cmp byte [esp + 0x13], 0
mov dword [esp + 0x40], eax
je 0x40d159
mov ecx, dword [esp + 0x54]
call fcn.0040c12a
mov cl, byte [esp + 0x11]
mov edx, eax
mov dword [esp + 0x44], eax
jmp 0x40d16b
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x24], eax
mov edx, dword [eax - 4]
mov dword [esp + 0x44], edx
mov eax, edx
mov dword [esp + 0x48], eax
test edx, edx
jne 0x40d189
cmp cl, 0xa
mov edx, str.NULL
mov esi, str._NULL_
cmovne edx, esi
mov dword [esp + 0x44], edx
xor esi, esi
xor edi, edi
cmp dword [esp + 0x2c], esi
je 0x40d1d2
mov cl, byte [edi + edx]
test cl, cl
je 0x40d1ce
cmp cl, byte [esp + 0x40]
lea eax, [esi + 1]
cmovne eax, esi
cmp byte [esp + 0x1a], 0
mov esi, eax
je 0x40d1c6
and cl, 0xc0
cmp cl, 0xc0
jne 0x40d1c6
lea ecx, [edx + 1]
add ecx, edi
jmp 0x40d1be
inc edi
inc ecx
mov al, byte [ecx]
and al, 0xc0
cmp al, 0x80
je 0x40d1bc
inc edi
sub dword [esp + 0x2c], 1
jne 0x40d193
mov eax, dword [esp + 0x48]
test eax, eax
je 0x40d1e7
cmp byte [esp + 0x11], 0xa
jne 0x40d1e7
mov dword [esp + 0x2c], 1
jmp 0x40d1ec
and dword [esp + 0x2c], 0
lea eax, [edi + 3]
add eax, esi
cmp eax, 0x46
jle 0x40d218
mov ecx, dword [esp + 0x38]
cdq
push edx
push eax
call fcn.0040c14c
mov dword [esp + 0x68], eax
mov dword [esp + 0x38], eax
pop ecx
pop ecx
mov ecx, eax
test eax, eax
je case.default.0x40c654
jmp 0x40d223
lea ecx, [esp + 0xf0]
mov dword [esp + 0x30], ecx
xor esi, esi
mov dword [esp + 0x20], esi
cmp dword [esp + 0x2c], esi
je 0x40d23a
mov eax, dword [esp + 0x40]
inc esi
mov byte [ecx], al
mov dword [esp + 0x20], esi
xor eax, eax
test edi, edi
jle 0x40d26e
mov edx, dword [esp + 0x44]
mov cl, byte [eax + edx]
mov edx, dword [esp + 0x30]
mov byte [esi + edx], cl
inc esi
mov edx, dword [esp + 0x44]
cmp cl, byte [esp + 0x40]
jne 0x40d265
mov edx, dword [esp + 0x30]
mov byte [esi + edx], cl
inc esi
mov edx, dword [esp + 0x44]
inc eax
cmp eax, edi
jl 0x40d244
mov dword [esp + 0x20], esi
cmp dword [esp + 0x2c], 0
mov edi, dword [esp + 0x30]
je 0x40d285
mov eax, dword [esp + 0x40]
mov byte [esi + edi], al
inc esi
mov dword [esp + 0x20], esi
mov byte [esi + edi], 0
mov dl, byte [esp + 0x1a]
test dl, dl
je 0x40d2c0
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x40d2c4
lea edx, [esi - 1]
test edx, edx
js 0x40d2c4
mov esi, eax
lea eax, [edx + edi]
mov al, byte [eax]
lea ecx, [esi + 1]
and al, 0xc0
cmp al, 0x80
cmovne ecx, esi
sub edx, 1
mov esi, ecx
jns 0x40d2a2
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov cl, byte [esp + 0x10]
sub eax, esi
mov dword [esp + 0x1c], eax
test eax, eax
jle 0x40d3a9
test cl, cl
jne 0x40d2e9
push 0x20
push eax
push dword [esp + 0x40]
call fcn.0040d558
add esp, 0xc
push esi
mov esi, dword [esp + 0x3c]
push edi
push esi
call fcn.0040d5d1
add esp, 0xc
cmp byte [esp + 0x10], 0
je 0x40d3b8
push 0x20
push dword [esp + 0x20]
push esi
call fcn.0040d558
jmp 0x40d3b5
mov ecx, dword [esp + 0x38]
test byte [ecx + 0x15], 1
je case.default.0x40c654
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x24], eax
mov eax, dword [eax - 4]
test eax, eax
je 0x40d3a7
cmp dword [eax + 4], 0
je 0x40d3a7
push dword [eax + 4]
push dword [eax]
push ecx
call fcn.0040d5d1
add esp, 0xc
jmp 0x40d3a7
mov ecx, dword [esp + 0x38]
test byte [ecx + 0x15], 1
je case.default.0x40c654
mov eax, dword [esp + 0x24]
lea edi, [eax + 8]
mov eax, dword [eax]
imul esi, dword [edi - 4], 0x48
mov dword [esp + 0x48], eax
mov eax, dword [esi + eax + 0xc]
test eax, eax
je 0x40d38f
push eax
push ecx
call fcn.0040d60f
push 1
push 0x534f3c
push dword [esp + 0x48]
call fcn.0040d5d1
mov ecx, dword [esp + 0x4c]
add esp, 0x14
mov eax, dword [esp + 0x48]
push dword [esi + eax + 0x10]
push ecx
call fcn.0040d60f
pop ecx
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x34]
pop ecx
xor esi, esi
push esi
mov esi, dword [esp + 0x3c]
push edi
push esi
call fcn.0040d5d1
add esp, 0xc
mov eax, dword [esp + 0x60]
test eax, eax
je 0x40d3ce
mov ecx, dword [esi]
mov edx, eax
call fcn.0040bb95
and dword [esp + 0x60], 0
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x24]
inc ecx
mov edx, dword [esp + 0x38]
movsx eax, byte [ecx]
test eax, eax
jne 0x40c308
jmp case.default.0x40c654
push 1
push 0x534f20
push edx
call fcn.0040d5d1
add esp, 0xc
mov ecx, dword [esp + 0x13c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004679dc
mov esp, ebp
pop ebp
ret