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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xbc
mov eax, dword [0x583f80]
xor eax, esp
mov dword [esp + 0xb8], eax
mov eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
push ebx
push esi
mov esi, dword [ebp + 8]
xor ecx, ecx
push edi
xor edi, edi
test byte [esi + 0x15], 2
mov dword [esp + 0x10], esi
mov dword [esp + 0x24], eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x54], ecx
mov dword [esp + 0x18], edi
je 0x40c729
add eax, 4
mov dword [esp + 0x24], eax
mov eax, dword [eax - 4]
mov dword [esp + 0x54], eax
mov byte [esp + 0x16], 1
jmp 0x40c72d
mov byte [esp + 0x16], cl
movsx eax, byte [edx]
test eax, eax
je case.default.0x40c9c9
cmp eax, 0x25
je 0x40c797
mov edi, edx
mov dword [esp + 0x18], edi
mov al, byte [edx + 1]
inc edx
test al, al
je 0x40c74f
cmp al, 0x25
jne 0x40c743
mov eax, dword [esi + 0x10]
mov ecx, edx
sub ecx, edi
mov dword [esp + 0x48], edx
lea edx, [ecx + eax]
cmp edx, dword [esi + 8]
jb 0x40c771
push ecx
mov edx, edi
mov ecx, esi
call fcn.0040dd10
add esp, 4
jmp 0x40c78a
test ecx, ecx
je 0x40c78a
mov eax, dword [esi + 4]
push ecx
sub eax, ecx
add eax, edx
push edi
push eax
mov dword [esi + 0x10], edx
call fcn.00507530
add esp, 0xc
mov edx, dword [esp + 0x48]
cmp byte [edx], 0
je case.default.0x40c9c9
movsx ecx, byte [edx + 1]
inc edx
test ecx, ecx
je 0x40dace
xor al, al
mov byte [esp + 0x37], al
mov byte [esp + 0x21], al
mov byte [esp + 0x2b], al
mov byte [esp + 0x23], al
mov byte [esp + 0x15], al
mov byte [esp + 0x2a], al
mov edi, edi
lea eax, [ecx - 0x20]
cmp eax, 0x10
ja case.0x40c7cf.34
movzx eax, byte [eax + 0x40db44]
jmp dword [eax*4 + 0x40db24]
mov byte [esp + 0x2a], 1
jmp 0x40c805
mov byte [esp + 0x15], 0x2b
jmp 0x40c805
mov byte [esp + 0x15], 0x20
jmp 0x40c805
mov byte [esp + 0x2b], 1
jmp 0x40c805
mov byte [esp + 0x21], 1
jmp 0x40c805
mov byte [esp + 0x37], 1
jmp 0x40c805
mov byte [esp + 0x23], 0x2c
movsx ecx, byte [edx + 1]
inc edx
test ecx, ecx
jne 0x40c7c0
mov dword [esp + 0x48], edx
cmp ecx, 0x2a
jne 0x40c873
cmp byte [esp + 0x16], 0
je 0x40c82d
mov ecx, dword [esp + 0x54]
call fcn.0040c5b0
mov edx, dword [esp + 0x48]
jmp 0x40c83b
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x24], eax
mov eax, dword [eax - 4]
mov dword [esp + 0x1c], eax
test eax, eax
jns 0x40c868
mov byte [esp + 0x2a], 1
cmp eax, reloc.WS2_32.dll_accept
jl 0x40c860
movsx ecx, byte [edx + 1]
neg eax
inc edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x48], edx
jmp 0x40c8b0
mov dword [esp + 0x1c], 0
movsx ecx, byte [edx + 1]
inc edx
mov dword [esp + 0x48], edx
jmp 0x40c8b0
xor eax, eax
cmp ecx, 0x30
jl 0x40c8a7
mov edi, eax
lea esp, [esp]
cmp ecx, 0x39
jg 0x40c897
lea edi, [edi + edi*4]
inc edx
lea edi, [edi - 0x18]
lea edi, [ecx + edi*2]
movsx ecx, byte [edx]
cmp ecx, 0x30
jge 0x40c880
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x48], edx
and eax, 0x7fffffff
mov dword [esp + 0x1c], eax
cmp ecx, 0x2e
jne 0x40c934
movsx ecx, byte [edx + 1]
inc edx
mov dword [esp + 0x48], edx
cmp ecx, 0x2a
jne 0x40c90a
cmp byte [esp + 0x16], 0
je 0x40c8df
mov ecx, dword [esp + 0x54]
call fcn.0040c5b0
mov edx, dword [esp + 0x48]
mov esi, eax
mov dword [esp + 0x2c], eax
jmp 0x40c8f1
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x24], eax
mov esi, dword [eax - 4]
mov dword [esp + 0x2c], esi
movsx ecx, byte [edx + 1]
inc edx
mov dword [esp + 0x48], edx
test esi, esi
jns 0x40c93b
cmp esi, reloc.WS2_32.dll_accept
jl 0x40c934
neg esi
jmp 0x40c937
xor esi, esi
cmp ecx, 0x30
jl 0x40c92c
cmp ecx, 0x39
jg 0x40c928
lea esi, [esi + esi*4]
inc edx
lea esi, [esi - 0x18]
lea esi, [ecx + esi*2]
movsx ecx, byte [edx]
cmp ecx, 0x30
jge 0x40c911
mov dword [esp + 0x48], edx
and esi, 0x7fffffff
jmp 0x40c937
or esi, 0xffffffff
mov dword [esp + 0x2c], esi
cmp ecx, 0x6c
jne 0x40c963
movsx ecx, byte [edx + 1]
inc edx
mov byte [esp + 0x22], 1
mov dword [esp + 0x48], edx
cmp ecx, 0x6c
jne 0x40c968
movsx ecx, byte [edx + 1]
inc edx
mov byte [esp + 0x22], 2
mov dword [esp + 0x48], edx
jmp 0x40c968
mov byte [esp + 0x22], 0
xor eax, eax
mov dword [esp + 0x50], 0x562fa0
mov byte [esp + 0x17], 0x11
mov dword [esp + 0x30], eax
mov edx, 0x562fa0
movsx eax, byte [edx]
cmp ecx, eax
je 0x40c9a0
inc dword [esp + 0x30]
add edx, 6
cmp edx, 0x56302a
jl 0x40c980
mov ecx, dword [esp + 0x50]
mov dl, byte [esp + 0x17]
jmp 0x40c9bd
mov eax, dword [esp + 0x30]
lea eax, [eax + eax*2]
mov dl, byte [eax*2 + 0x562fa3]
lea ecx, [eax*2 + 0x562fa0]
mov dword [esp + 0x50], ecx
mov byte [esp + 0x17], dl
movzx eax, dl
cmp eax, 0x10
ja case.default.0x40c9c9
jmp dword [eax*4 + 0x40db58]
mov al, 1
mov byte [esp + 0x23], 0
jmp 0x40c9e8
mov al, byte [esp + 0x22]
mov byte [esp + 0x23], 0
jmp 0x40c9e8
mov al, byte [esp + 0x22]
test byte [ecx + 2], 1
je 0x40ca80
cmp byte [esp + 0x16], 0
je 0x40ca04
mov ecx, dword [esp + 0x54]
call fcn.0040c5b0
jmp 0x40ca38
test al, al
je 0x40ca29
mov edi, dword [esp + 0x24]
cmp al, 2
jne 0x40ca1e
mov eax, dword [edi]
mov ecx, dword [edi + 4]
add edi, 8
mov dword [esp + 0x24], edi
jmp 0x40ca3a
mov eax, dword [edi]
add edi, 4
mov dword [esp + 0x24], edi
jmp 0x40ca37
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x24], eax
mov eax, dword [eax - 4]
cdq
mov ecx, edx
test ecx, ecx
jg 0x40ca72
jl 0x40ca44
test eax, eax
jae 0x40ca72
test eax, eax
jne 0x40ca5f
cmp ecx, 0x80000000
jne 0x40ca5f
mov dword [esp + 0x18], ecx
mov dword [esp + 0x38], eax
mov cl, 0x2d
jmp 0x40cadf
neg eax
adc ecx, 0
neg ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x38], eax
mov cl, 0x2d
jmp 0x40cadf
mov dword [esp + 0x18], ecx
mov cl, byte [esp + 0x15]
mov dword [esp + 0x38], eax
jmp 0x40cae3
cmp byte [esp + 0x16], 0
je 0x40ca96
mov ecx, dword [esp + 0x54]
call fcn.0040c5b0
mov dword [esp + 0x18], edx
jmp 0x40cad9
test al, al
je 0x40cac3
mov edx, dword [esp + 0x24]
cmp al, 2
jne 0x40cab8
mov eax, dword [edx]
add edx, 8
mov dword [esp + 0x38], eax
mov eax, dword [edx - 4]
mov dword [esp + 0x24], edx
mov dword [esp + 0x18], eax
jmp 0x40cadd
mov eax, dword [edx]
add edx, 4
mov dword [esp + 0x24], edx
jmp 0x40cad1
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x24], eax
mov eax, dword [eax - 4]
mov dword [esp + 0x18], 0
mov dword [esp + 0x38], eax
xor cl, cl
mov byte [esp + 0x15], cl
mov edx, dword [esp + 0x38]
mov eax, edx
or eax, dword [esp + 0x18]
jne 0x40caf3
mov byte [esp + 0x2b], al
mov al, byte [esp + 0x37]
test al, al
je 0x40cb11
xor eax, eax
test cl, cl
mov ecx, dword [esp + 0x1c]
setne al
sub ecx, eax
cmp esi, ecx
cmovl esi, ecx
mov dword [esp + 0x2c], esi
cmp esi, 0x25
jge 0x40cb29
mov edi, 0x46
lea eax, [esp + 0x78]
mov dword [esp + 0x4c], edi
mov dword [esp + 0x30], eax
jmp 0x40cb7d
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
mov edi, eax
mov ecx, edx
mov eax, esi
cdq
add edi, eax
adc ecx, edx
add edi, 0xa
adc ecx, 0
mov eax, edi
or eax, ecx
mov dword [esp + 0x4c], edi
je 0x40cb65
push ecx
push edi
call fcn.0040bb80
add esp, 8
mov ecx, eax
mov dword [esp + 0x44], eax
jmp 0x40cb6b
xor ecx, ecx
mov dword [esp + 0x44], ecx
mov eax, ecx
mov dword [esp + 0x30], eax
test ecx, ecx
je 0x40d77d
mov edx, dword [esp + 0x38]
dec edi
add edi, eax
cmp byte [esp + 0x17], 0xf
jne 0x40cbe2
push 0
push 0xa
push dword [esp + 0x20]
push edx
call fcn.0050de50
lea ecx, [eax + eax*4]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x38]
add ecx, ecx
sub eax, ecx
mov dword [esp + 0x60], eax
cmp eax, 4
jge 0x40cbc4
push 0
push 0xa
push edx
push dword [esp + 0x4c]
call fcn.00523740
cmp eax, 1
jne 0x40cbc8
test edx, edx
jne 0x40cbc8
xor ecx, ecx
jmp 0x40cbcc
mov ecx, dword [esp + 0x60]
mov al, byte [ecx*2 + 0x562ae5]
mov byte [edi - 1], al
mov al, byte [ecx*2 + str.thstndrd]
sub edi, 2
mov byte [edi], al
mov ecx, dword [esp + 0x50]
mov esi, dword [esp + 0x38]
movzx eax, byte [ecx + 4]
add eax, str.0123456789ABCDEF0123456789abcdef
mov dword [esp + 0x58], eax
movzx eax, byte [ecx + 1]
cdq
mov ecx, eax
mov eax, edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x60], eax
lea esp, [esp]
push eax
push ecx
push edx
push esi
dec edi
call fcn.005093a0
mov esi, eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x3c], ebx
mov al, byte [ecx + eax]
mov ecx, dword [esp + 0x40]
mov byte [edi], al
mov eax, dword [esp + 0x60]
test edx, edx
ja 0x40cc10
jb 0x40cc3b
test esi, esi
jne 0x40cc10
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x4c]
mov esi, dword [esp + 0x2c]
mov eax, edx
sub eax, edi
dec eax
add eax, ecx
mov dword [esp + 0x18], edi
cmp esi, eax
jle 0x40cc6b
sub esi, eax
add eax, esi
lea ebx, [ebx]
dec edi
mov byte [edi], 0x30
dec esi
jne 0x40cc60
mov dword [esp + 0x18], edi
cmp byte [esp + 0x23], 0
je 0x40ccb3
dec eax
cdq
mov ecx, 3
idiv ecx
xor ecx, ecx
mov esi, eax
sub edi, esi
inc edx
mov dword [esp + 0x18], edi
test esi, esi
jle 0x40ccaf
lea ebx, [ebx]
lea eax, [esi + ecx]
mov al, byte [eax + edi]
mov byte [ecx + edi], al
dec edx
jne 0x40ccaa
mov al, byte [esp + 0x23]
inc ecx
dec esi
mov byte [ecx + edi], al
mov edx, 3
inc ecx
test esi, esi
jg 0x40cc90
mov edx, dword [esp + 0x30]
mov cl, byte [esp + 0x15]
test cl, cl
je 0x40ccc2
dec edi
mov dword [esp + 0x18], edi
mov byte [edi], cl
cmp byte [esp + 0x2b], 0
je 0x40ccf2
mov eax, dword [esp + 0x50]
mov al, byte [eax + 5]
test al, al
je 0x40ccf2
movzx eax, al
add eax, 0x566bfc
mov cl, byte [eax]
test cl, cl
je 0x40ccf2
dec edi
lea eax, [eax + 1]
mov byte [edi], cl
mov cl, byte [eax]
test cl, cl
jne 0x40cce2
mov dword [esp + 0x18], edi
mov esi, dword [esp + 0x4c]
sub edx, edi
dec esi
add esi, edx
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
sub eax, esi
mov dword [esp + 0x1c], eax
test eax, eax
jle 0x40d9c4
cmp byte [esp + 0x2a], 0
jne 0x40d926
mov dword [esp + 0x40], eax
mov eax, dword [edx + 0x10]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x1c]
cdq
xor ecx, ecx
add dword [esp + 0x4c], eax
adc ecx, edx
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 8]
js 0x40d902
jg 0x40cd4d
cmp dword [esp + 0x4c], eax
jb 0x40d902
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
call fcn.0040dba0
mov edx, eax
test edx, edx
jle 0x40d926
jmp 0x40d906
cmp byte [esp + 0x16], 0
je 0x40cd83
mov ecx, dword [esp + 0x54]
call fcn.0040c620
mov dl, byte [esp + 0x17]
movapd xmm2, xmm0
jmp 0x40cd93
mov eax, dword [esp + 0x24]
add eax, 8
mov dword [esp + 0x24], eax
movsd xmm2, qword [eax - 8]
test esi, esi
mov eax, 6
cmovs esi, eax
xorps xmm3, xmm3
comisd xmm3, xmm2
movsd qword [esp + 0x58], xmm2
mov dword [esp + 0x2c], esi
jbe 0x40cdc6
xorpd xmm2, xmmword [0x571f90]
mov dh, 0x2d
movsd qword [esp + 0x58], xmm2
mov byte [esp + 0x15], dh
jmp 0x40cdca
mov dh, byte [esp + 0x15]
cmp dl, 3
jne 0x40cdd8
test esi, esi
jle 0x40cdd8
dec esi
mov dword [esp + 0x2c], esi
movsd xmm1, qword [0x571e50]
movsd xmm4, qword [0x571e48]
and esi, 0xfff
cmp esi, 8
jl 0x40ce24
lea ecx, [esi - 8]
shr ecx, 3
inc ecx
mov eax, ecx
neg eax
lea esi, [esi + eax*8]
mulsd xmm1, xmm4
mulsd xmm1, xmm4
mulsd xmm1, xmm4
mulsd xmm1, xmm4
mulsd xmm1, xmm4
mulsd xmm1, xmm4
mulsd xmm1, xmm4
mulsd xmm1, xmm4
dec ecx
jne 0x40ce01
test esi, esi
jle 0x40ce31
dec esi
mulsd xmm1, xmm4
test esi, esi
jg 0x40ce28
cmp dl, 1
jne 0x40ce44
movapd xmm0, xmm1
addsd xmm2, xmm0
movsd qword [esp + 0x58], xmm2
movsd qword [esp + 0x68], xmm2
movsd xmm0, qword [esp + 0x68]
movsd qword [esp + 0x70], xmm0
movsd xmm0, qword [esp + 0x68]
xor ecx, ecx
ucomisd xmm0, qword [esp + 0x70]
mov dword [esp + 0x38], ecx
lahf
test ah, 0x44
jnp 0x40ce7f
mov edi, 0x567a38
mov dword [esp + 0x18], edi
lea esi, [ecx + 3]
jmp 0x40ccfb
comisd xmm2, xmm3
jbe 0x40cfb0
movsd xmm5, qword [0x571f20]
comisd xmm2, xmm5
movsd xmm6, qword [0x571e58]
movapd xmm3, xmm6
jb 0x40cec4
cmp ecx, 0x15e
jg 0x40cec0
mulsd xmm3, xmm5
add ecx, 0x64
movapd xmm0, xmm3
mulsd xmm0, xmm5
comisd xmm2, xmm0
jae 0x40cea3
mov dword [esp + 0x38], ecx
movsd xmm5, qword [0x571ef0]
movapd xmm0, xmm3
mulsd xmm0, xmm5
comisd xmm2, xmm0
jb 0x40cefd
lea ebx, [ebx]
cmp ecx, 0x15e
jg 0x40cef9
movapd xmm3, xmm0
mulsd xmm0, xmm5
add ecx, 0xa
comisd xmm2, xmm0
jae 0x40cee0
mov dword [esp + 0x38], ecx
movsd xmm5, qword [0x571e68]
movapd xmm0, xmm3
mulsd xmm0, xmm5
comisd xmm2, xmm0
jb 0x40cf2e
cmp ecx, 0x15e
jg 0x40cf2a
movapd xmm3, xmm0
mulsd xmm0, xmm5
inc ecx
comisd xmm2, xmm0
jae 0x40cf13
mov dword [esp + 0x38], ecx
divsd xmm2, xmm3
movsd xmm0, qword [0x571e40]
comisd xmm0, xmm2
movsd qword [esp + 0x58], xmm2
jbe 0x40cf67
movsd xmm3, qword [0x571ed0]
mov edi, edi
mulsd xmm2, xmm3
sub ecx, 8
comisd xmm0, xmm2
ja 0x40cf50
mov dword [esp + 0x38], ecx
movsd qword [esp + 0x58], xmm2
comisd xmm6, xmm2
jbe 0x40cf85
lea ecx, [ecx]
mulsd xmm2, xmm5
dec ecx
comisd xmm6, xmm2
ja 0x40cf70
mov dword [esp + 0x38], ecx
movsd qword [esp + 0x58], xmm2
cmp ecx, 0x15e
jle 0x40cfb8
xor eax, eax
test dh, dh
setne al
lea edi, [esp + 0x78]
mov byte [esp + 0x78], dh
mov dword [esp + 0x18], edi
mov dword [esp + eax + 0x78], 0x666e49
lea esi, [eax + 3]
jmp 0x40ccfb
movsd xmm5, qword [0x571e68]
lea esi, [esp + 0x78]
cmp dl, 1
je 0x40cfe0
addsd xmm2, xmm1
comisd xmm2, xmm5
movsd qword [esp + 0x58], xmm2
jb 0x40cfe0
mulsd xmm2, xmm4
inc ecx
mov dword [esp + 0x38], ecx
movsd qword [esp + 0x58], xmm2
cmp dl, 3
jne 0x40d073
cmp byte [esp + 0x2b], 0
sete byte [esp + 0x23]
cmp ecx, 0xfffffffc
jl 0x40d066
mov edi, dword [esp + 0x2c]
cmp ecx, edi
jg 0x40d066
sub edi, ecx
mov dword [esp + 0x2c], edi
mov byte [esp + 0x17], 1
mov edx, ecx
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x2c]
xor eax, eax
test edx, edx
cmovg eax, edx
cdq
mov edi, eax
mov dword [esp + 0x18], edx
mov eax, ecx
cdq
add edi, eax
adc dword [esp + 0x18], edx
mov eax, dword [esp + 0x1c]
cdq
add edi, eax
mov eax, dword [esp + 0x18]
adc eax, edx
js 0x40d098
jg 0x40d042
cmp edi, 0x37
jbe 0x40d098
add edi, 0xf
adc eax, 0
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0x18]
mov eax, edi
or eax, edx
je 0x40d088
push edx
push edi
call fcn.0040bb80
mov ecx, dword [esp + 0x34]
add esp, 8
jmp 0x40d08a
xor edx, edx
mov byte [esp + 0x17], 2
mov dword [esp + 0x30], edx
jmp 0x40d011
mov al, byte [esp + 0x21]
mov byte [esp + 0x23], al
cmp dl, 2
jne 0x40d00b
xor edx, edx
mov dword [esp + 0x30], edx
jmp 0x40d011
xor eax, eax
mov dword [esp + 0x44], eax
mov esi, eax
test eax, eax
je 0x40d77d
movzx eax, byte [esp + 0x21]
test ecx, ecx
lea eax, [eax + eax*4]
mov edi, esi
lea edx, [eax*2 + 0x10]
mov ah, byte [esp + 0x21]
setg al
or al, ah
or al, byte [esp + 0x2b]
mov dword [esp + 0x18], edi
mov byte [esp + 0x22], al
mov al, byte [esp + 0x15]
mov dword [esp + 0x40], edx
test al, al
je 0x40d0cf
mov byte [esi], al
inc esi
mov eax, dword [esp + 0x30]
movsd xmm1, qword [esp + 0x58]
movsd xmm2, qword [0x571e68]
test eax, eax
jns 0x40d0f0
mov byte [esi], 0x30
inc esi
jmp 0x40d121
test edx, edx
jg 0x40d0f8
mov al, 0x30
jmp 0x40d10f
cvttsd2si eax, xmm1
dec edx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
add al, 0x30
subsd xmm1, xmm0
mulsd xmm1, xmm2
mov byte [esi], al
mov eax, dword [esp + 0x30]
inc esi
dec eax
mov dword [esp + 0x30], eax
jns 0x40d0f0
mov dword [esp + 0x40], edx
cmp byte [esp + 0x22], 0
je 0x40d12c
mov byte [esi], 0x2e
inc esi
inc eax
jns 0x40d15c
neg eax
mov ecx, eax
mov edx, ecx
shr ecx, 2
mov dword [esp + 0x30], eax
mov edi, esi
mov eax, 0x30303030
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x18]
add esi, edx
sub ecx, edx
mov edx, dword [esp + 0x40]
test ecx, ecx
jle 0x40d187
dec ecx
test edx, edx
jg 0x40d169
mov al, 0x30
jmp 0x40d180
cvttsd2si eax, xmm1
dec edx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
add al, 0x30
subsd xmm1, xmm0
mulsd xmm1, xmm2
mov byte [esi], al
inc esi
test ecx, ecx
jg 0x40d160
cmp byte [esp + 0x23], 0
je 0x40d1c4
cmp byte [esp + 0x22], 0
je 0x40d1c4
cmp byte [esi - 1], 0x30
lea eax, [esi - 1]
jne 0x40d1ad
mov edi, edi
mov esi, eax
lea eax, [esi - 1]
mov byte [esi], 0
cmp byte [eax], 0x30
je 0x40d1a0
cmp byte [esi - 1], 0x2e
jne 0x40d1c4
cmp byte [esp + 0x21], 0
je 0x40d1c0
mov byte [esi], 0x30
inc esi
jmp 0x40d1c4
dec esi
mov byte [esi], 0
cmp byte [esp + 0x17], 2
jne 0x40d256
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x38]
movzx eax, byte [eax + 4]
mov al, byte [eax + str.0123456789ABCDEF0123456789abcdef]
mov byte [esi], al
test edx, edx
jns 0x40d1f6
mov byte [esi + 1], 0x2d
add esi, 2
neg edx
mov dword [esp + 0x38], edx
jmp 0x40d1fd
mov byte [esi + 1], 0x2b
add esi, 2
cmp edx, 0x64
jl 0x40d227
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [esp + 0x38]
mov al, cl
imul ecx, ecx, 0xffffff9c
add al, 0x30
mov byte [esi], al
inc esi
add edx, ecx
mov dword [esp + 0x38], edx
mov eax, 0x66666667
imul edx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov al, cl
add al, 0x30
mov byte [esi], al
mov al, cl
shl cl, 2
add al, cl
mov ecx, dword [esp + 0x38]
add al, al
sub cl, al
add cl, 0x30
mov byte [esi + 1], cl
add esi, 2
mov al, byte [esp + 0x37]
mov byte [esi], 0
sub esi, edi
test al, al
je 0x40ccfb
cmp byte [esp + 0x2a], 0
jne 0x40ccfb
mov eax, dword [esp + 0x1c]
cmp esi, eax
jge 0x40ccfb
mov edx, eax
sub edx, esi
mov ecx, eax
cmp eax, edx
jl 0x40d29b
mov esi, edi
sub esi, edx
lea esp, [esp]
mov al, byte [esi + ecx]
mov byte [ecx + edi], al
dec ecx
cmp ecx, edx
jge 0x40d290
mov cl, byte [esp + 0x15]
xor eax, eax
test cl, cl
setne al
test edx, edx
je 0x40d2c3
add edi, eax
mov ecx, edx
shr ecx, 2
mov eax, 0x30303030
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov esi, eax
jmp 0x40ccff
cmp byte [esp + 0x16], 0
jne 0x40d2eb
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x24], eax
mov eax, dword [edx + 0x10]
mov dword [ecx], eax
xor esi, esi
xor eax, eax
jmp 0x40ccff
lea edi, [esp + 0x78]
mov byte [esp + 0x78], 0x25
mov dword [esp + 0x18], edi
mov esi, 1
jmp 0x40ccfb
cmp byte [esp + 0x16], 0
je 0x40d368
mov ecx, dword [esp + 0x54]
call fcn.0040c680
mov edx, eax
mov esi, 1
test edx, edx
je 0x40d35e
movsx ecx, byte [edx]
mov byte [esp + 0x78], cl
and ecx, 0xc0
inc edx
cmp cl, 0xc0
jne 0x40d417
lea ecx, [ecx]
mov cl, byte [edx]
mov al, cl
and al, 0xc0
cmp al, 0x80
jne 0x40d417
mov byte [esp + esi + 0x78], cl
inc esi
inc edx
cmp esi, 4
jl 0x40d340
jmp 0x40d417
mov byte [esp + 0x78], 0
jmp 0x40d417
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x24], eax
mov ecx, dword [eax - 4]
cmp ecx, 0x80
jae 0x40d38c
mov byte [esp + 0x78], cl
mov esi, 1
jmp 0x40d417
mov eax, ecx
cmp ecx, 0x800
jae 0x40d3b2
shr eax, 6
and al, 0x1f
sub al, 0x40
and cl, 0x3f
add cl, 0x80
mov byte [esp + 0x78], al
mov byte [esp + 0x79], cl
mov esi, 2
jmp 0x40d417
cmp ecx, 0x10000
jae 0x40d3e3
shr eax, 0xc
and al, 0xf
sub al, 0x20
mov byte [esp + 0x78], al
mov eax, ecx
shr eax, 6
and al, 0x3f
add al, 0x80
and cl, 0x3f
add cl, 0x80
mov byte [esp + 0x79], al
mov byte [esp + 0x7a], cl
mov esi, 3
jmp 0x40d417
shr eax, 0x12
and al, 7
sub al, 0x10
mov byte [esp + 0x78], al
mov eax, ecx
shr eax, 0xc
and al, 0x3f
add al, 0x80
mov byte [esp + 0x79], al
mov eax, ecx
shr eax, 6
and al, 0x3f
add al, 0x80
and cl, 0x3f
add cl, 0x80
mov byte [esp + 0x7a], al
mov byte [esp + 0x7b], cl
mov esi, 4
mov edi, dword [esp + 0x2c]
cmp edi, 1
jle 0x40d4a4
mov ecx, dword [esp + 0x1c]
mov eax, 1
sub eax, edi
add ecx, eax
mov dword [esp + 0x1c], ecx
cmp ecx, 1
jle 0x40d45c
cmp byte [esp + 0x2a], 0
jne 0x40d45c
mov edx, dword [esp + 0x10]
push 0x20
lea eax, [ecx - 1]
push eax
push edx
call fcn.0040dcc0
add esp, 0xc
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x10]
dec edi
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x10]
add ecx, esi
cmp ecx, dword [eax + 8]
jb 0x40d480
push esi
lea edx, [esp + 0x7c]
mov ecx, eax
call fcn.0040dd10
add esp, 4
jmp 0x40d49d
test esi, esi
je 0x40d4a1
mov dword [eax + 0x10], ecx
mov eax, dword [eax + 4]
push esi
lea edx, [esp + 0x7c]
sub eax, esi
push edx
add eax, ecx
push eax
call fcn.00507530
add esp, 0xc
mov eax, dword [esp + 0x10]
dec edi
jne 0x40d461
lea edi, [esp + 0x78]
mov dword [esp + 0x18], edi
jmp 0x40d810
cmp byte [esp + 0x16], 0
je 0x40d4cb
mov ecx, dword [esp + 0x54]
call fcn.0040c680
mov edi, eax
mov dword [esp + 0x18], eax
mov dl, 5
jmp 0x40d4dd
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x24], eax
mov edi, dword [eax - 4]
mov dword [esp + 0x18], edi
test edi, edi
jne 0x40d4ec
mov edi, 0x5618f4
mov dword [esp + 0x18], edi
jmp 0x40d559
cmp dl, 6
jne 0x40d559
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x10], 0
jne 0x40d555
cmp dword [eax + 0xc], 0
je 0x40d555
cmp dword [esp + 0x1c], 0
jne 0x40d555
test esi, esi
jns 0x40d555
cmp byte [eax + 0x14], 0
jne 0x40d555
mov ecx, dword [eax]
mov edx, edi
mov dword [eax + 4], edi
call fcn.0040bc70
mov edx, dword [esp + 0x10]
mov ecx, edi
mov dword [edx + 8], eax
lea edx, [ecx + 1]
lea ebx, [ebx]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40d530
mov eax, dword [esp + 0x1c]
sub ecx, edx
mov edx, dword [esp + 0x10]
and ecx, 0x7fffffff
or byte [edx + 0x15], 4
mov dword [edx + 0x10], ecx
xor esi, esi
jmp 0x40cd03
mov dword [esp + 0x44], edi
test esi, esi
js 0x40d5c4
cmp byte [esp + 0x21], 0
je 0x40d599
mov ecx, dword [esp + 0x2c]
mov esi, edi
test ecx, ecx
jle 0x40d592
mov edi, edi
mov al, byte [esi]
dec ecx
test al, al
je 0x40d592
inc esi
cmp al, 0xc0
jb 0x40d58e
mov al, byte [esi]
and al, 0xc0
cmp al, 0x80
jne 0x40d58e
mov al, byte [esi + 1]
inc esi
and al, 0xc0
cmp al, 0x80
je 0x40d584
test ecx, ecx
jg 0x40d570
sub esi, edi
jmp 0x40d805
mov eax, dword [esp + 0x2c]
xor esi, esi
test eax, eax
jle 0x40ccfb
jmp 0x40d5b0
cmp byte [esi + edi], 0
je 0x40ccfb
inc esi
cmp esi, eax
jl 0x40d5b0
jmp 0x40ccfb
mov esi, edi
lea ecx, [esi + 1]
lea esp, [esp]
mov al, byte [esi]
inc esi
test al, al
jne 0x40d5d0
sub esi, ecx
and esi, 0x7fffffff
jmp 0x40d805
cmp dl, 0xe
mov eax, 0x27
mov ecx, 0x22
cmove eax, ecx
cmp byte [esp + 0x16], 0
mov dword [esp + 0x50], eax
je 0x40d665
mov edi, dword [esp + 0x54]
mov edx, dword [edi + 4]
cmp dword [edi], edx
jg 0x40d612
mov dl, byte [esp + 0x17]
xor ecx, ecx
jmp 0x40d673
mov eax, dword [edi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [edi + 4], eax
test ecx, ecx
jne 0x40d628
mov dl, byte [esp + 0x17]
jmp 0x40d673
movzx edx, word [ecx + 8]
mov eax, edx
and eax, 0x202
cmp eax, 0x202
jne 0x40d649
cmp byte [ecx + 0xa], 1
jne 0x40d649
mov ecx, dword [ecx + 0x10]
mov dl, byte [esp + 0x17]
jmp 0x40d673
test dl, 1
je 0x40d656
mov dl, byte [esp + 0x17]
xor ecx, ecx
jmp 0x40d673
mov dl, 1
call fcn.0042ce10
mov dl, byte [esp + 0x17]
mov ecx, eax
jmp 0x40d673
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x24], eax
mov ecx, dword [eax - 4]
xor eax, eax
test ecx, ecx
sete al
mov dword [esp + 0x38], ecx
mov dword [esp + 0x58], eax
test eax, eax
je 0x40d69a
cmp dl, 0xa
mov ecx, str.NULL
mov edx, str._NULL_
cmovne ecx, edx
mov dword [esp + 0x38], ecx
xor edx, edx
xor edi, edi
test esi, esi
je 0x40d6db
mov ah, byte [esp + 0x21]
mov al, byte [edi + ecx]
test al, al
je 0x40d6d7
cmp al, byte [esp + 0x50]
jne 0x40d6b4
inc edx
test ah, ah
je 0x40d6d3
and al, 0xc0
cmp al, 0xc0
jne 0x40d6d3
mov al, byte [ecx + edi + 1]
and al, 0xc0
cmp al, 0x80
jne 0x40d6d3
mov al, byte [ecx + edi + 2]
inc edi
and al, 0xc0
cmp al, 0x80
je 0x40d6c8
inc edi
dec esi
jne 0x40d6a6
mov eax, dword [esp + 0x58]
test eax, eax
jne 0x40d6ee
cmp byte [esp + 0x17], 0xa
mov dword [esp + 0x4c], 1
je 0x40d6f6
mov dword [esp + 0x4c], 0
lea eax, [edi + 3]
add eax, edx
cmp eax, 0x46
jle 0x40d7a1
cdq
mov esi, eax
mov ecx, esi
or ecx, edx
je 0x40d769
test edx, edx
ja 0x40d769
jb 0x40d71b
cmp esi, 0x7fffff00
jae 0x40d769
cmp dword [0x586ae0], 0
je 0x40d75b
mov eax, dword [0x588558]
test eax, eax
je 0x40d737
push eax
call dword [0x586b3c]
add esp, 4
lea edx, [esp + 0x64]
mov ecx, esi
call fcn.0040ba90
mov eax, dword [0x588558]
test eax, eax
je 0x40d755
push eax
call dword [0x586b44]
add esp, 4
mov ecx, dword [esp + 0x64]
jmp 0x40d76f
push esi
call dword [0x586b0c]
add esp, 4
mov ecx, eax
jmp 0x40d76b
xor ecx, ecx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x44], ecx
mov eax, ecx
mov dword [esp + 0x18], ecx
test ecx, ecx
jne 0x40d7a9
mov eax, dword [esp + 0x10]
mov byte [eax + 0x14], 7
mov dword [eax + 8], 0
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb8]
xor ecx, esp
call fcn.004fcf30
mov esp, ebp
pop ebp
ret
lea eax, [esp + 0x78]
mov dword [esp + 0x18], eax
xor esi, esi
cmp dword [esp + 0x4c], esi
je 0x40d7bc
mov ecx, dword [esp + 0x50]
mov byte [eax], cl
mov esi, 1
xor edx, edx
mov dword [esp + 0x40], edx
test edi, edi
jle 0x40d7ee
mov ecx, dword [esp + 0x38]
lea ebx, [ebx]
mov dl, byte [edx + ecx]
mov byte [esi + eax], dl
inc esi
cmp dl, byte [esp + 0x50]
jne 0x40d7e1
mov byte [esi + eax], dl
inc esi
mov edx, dword [esp + 0x40]
inc edx
mov dword [esp + 0x40], edx
cmp edx, edi
jl 0x40d7d0
cmp dword [esp + 0x4c], 0
mov edi, dword [esp + 0x18]
je 0x40d801
mov eax, dword [esp + 0x50]
mov byte [esi + edi], al
inc esi
mov byte [esi + edi], 0
cmp byte [esp + 0x21], 0
je 0x40ccfb
mov edx, dword [esp + 0x1c]
test edx, edx
jle 0x40ccfb
lea ecx, [esi - 1]
test ecx, ecx
js 0x40ccfb
mov al, byte [ecx + edi]
and al, 0xc0
dec ecx
cmp al, 0x80
jne 0x40d832
inc edx
test ecx, ecx
jns 0x40d827
mov dword [esp + 0x1c], edx
jmp 0x40ccfb
mov edx, dword [esp + 0x10]
test byte [edx + 0x15], 1
je case.default.0x40c9c9
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x24], eax
mov eax, dword [eax - 4]
test eax, eax
je 0x40d876
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x40d876
push ecx
push dword [eax]
push edx
call fcn.0040dd50
mov edx, dword [esp + 0x1c]
add esp, 0xc
xor esi, esi
xor eax, eax
jmp 0x40cd03
mov edx, dword [esp + 0x10]
test byte [edx + 0x15], 1
je case.default.0x40c9c9
mov eax, dword [esp + 0x24]
add eax, 8
mov esi, dword [eax - 8]
mov dword [esp + 0x24], eax
mov eax, dword [eax - 4]
lea eax, [eax + eax*8]
mov dword [esp + 0x58], eax
mov eax, dword [esi + eax*8 + 0xc]
test eax, eax
je 0x40d8e8
push eax
push edx
call fcn.0040dda0
mov ecx, dword [esp + 0x18]
add esp, 8
mov edx, dword [ecx + 0x10]
inc edx
cmp edx, dword [ecx + 8]
jb 0x40d8d5
push 1
mov edx, 0x567188
call fcn.0040dd10
add esp, 4
jmp 0x40d8e4
mov dword [ecx + 0x10], edx
mov ecx, dword [ecx + 4]
mov al, byte [0x567188]
mov byte [ecx + edx - 1], al
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x58]
push dword [esi + eax*8 + 0x10]
push edx
call fcn.0040dda0
add esp, 8
xor esi, esi
xor eax, eax
jmp 0x40ccff
mov edx, dword [esp + 0x40]
mov edi, dword [esp + 0x10]
lea ebx, [ebx]
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 4]
dec edx
mov byte [ecx + eax], 0x20
inc dword [edi + 0x10]
test edx, edx
jg 0x40d910
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x10]
add ecx, esi
cmp ecx, dword [eax + 8]
jb 0x40d943
push esi
mov edx, edi
mov ecx, eax
call fcn.0040dd10
add esp, 4
jmp 0x40d95c
test esi, esi
je 0x40d960
mov dword [eax + 0x10], ecx
mov eax, dword [eax + 4]
push esi
sub eax, esi
add eax, ecx
push edi
push eax
call fcn.00507530
add esp, 0xc
mov eax, dword [esp + 0x10]
cmp byte [esp + 0x2a], 0
je 0x40d9fa
mov esi, dword [eax + 0x10]
mov eax, dword [esp + 0x1c]
cdq
xor ecx, ecx
add esi, eax
adc ecx, edx
js 0x40d9a1
jg 0x40d986
mov eax, dword [esp + 0x10]
cmp esi, dword [eax + 8]
jb 0x40d99d
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
mov ecx, esi
call fcn.0040dba0
mov edx, eax
test edx, edx
jle 0x40d9fe
jmp 0x40d9b0
mov esi, eax
jmp 0x40d9a5
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
lea esp, [esp]
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 4]
dec edx
mov byte [ecx + eax], 0x20
inc dword [esi + 0x10]
test edx, edx
jg 0x40d9b0
jmp 0x40d9fe
mov ecx, dword [edx + 0x10]
add ecx, esi
cmp ecx, dword [edx + 8]
jb 0x40d9e1
push esi
mov esi, dword [esp + 0x14]
mov edx, edi
mov ecx, esi
call fcn.0040dd10
add esp, 4
jmp 0x40d9fe
test esi, esi
je 0x40d9fa
mov eax, dword [edx + 4]
push esi
sub eax, esi
add eax, ecx
push edi
push eax
mov dword [edx + 0x10], ecx
call fcn.00507530
add esp, 0xc
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x44]
test edx, edx
je 0x40daa9
mov ecx, dword [esi]
test ecx, ecx
je 0x40da43
cmp dword [ecx + 0x1d8], 0
je 0x40da23
call fcn.0040bd30
jmp 0x40daa3
cmp edx, dword [ecx + 0x128]
jb 0x40da43
cmp edx, dword [ecx + 0x12c]
jae 0x40da43
mov eax, dword [ecx + 0x124]
mov dword [edx], eax
mov dword [ecx + 0x124], edx
jmp 0x40daa3
cmp dword [0x586ae0], 0
je 0x40da99
mov eax, dword [0x588558]
test eax, eax
je 0x40da63
push eax
call dword [0x586b3c]
mov edx, dword [esp + 0x48]
add esp, 4
push edx
call dword [0x586b18]
mov ecx, dword [esp + 0x48]
sub dword [0x588588], eax
dec dword [0x5885ac]
add esp, 4
push ecx
call dword [0x586b10]
mov eax, dword [0x588558]
add esp, 4
test eax, eax
je 0x40daa3
push eax
call dword [0x586b44]
jmp 0x40daa0
push edx
call dword [0x586b10]
add esp, 4
xor ecx, ecx
mov dword [esp + 0x44], ecx
mov edx, dword [esp + 0x48]
inc edx
movsx eax, byte [edx]
test eax, eax
jne 0x40c738
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb8]
xor ecx, esp
call fcn.004fcf30
mov esp, ebp
pop ebp
ret
mov edx, dword [esi + 0x10]
inc edx
cmp edx, dword [esi + 8]
jb 0x40dafd
push 1
mov edx, 0x567a34
mov ecx, esi
call fcn.0040dd10
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb8]
xor ecx, esp
call fcn.004fcf30
mov esp, ebp
pop ebp
ret
mov ecx, dword [esi + 4]
mov dword [esi + 0x10], edx
mov al, byte [0x567a34]
mov byte [ecx + edx - 1], al
mov ecx, dword [esp + 0xc4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004fcf30
mov esp, ebp
pop ebp
ret