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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xd4
mov eax, dword [0x5ff1d4]
xor eax, esp
mov dword [esp + 0xd0], eax
mov edx, dword [ebp + 8]
xor ecx, ecx
mov eax, dword [ebp + 0x10]
push ebx
push esi
test byte [edx + 0x15], 2
mov esi, dword [ebp + 0xc]
push edi
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x88], ecx
mov dword [esp + 0x78], ecx
mov dword [esp + 0x18], ecx
je 0x40638a
add eax, 4
mov byte [esp + 0x1d], 1
mov dword [esp + 0x2c], eax
mov eax, dword [eax - 4]
mov dword [esp + 0x78], eax
jmp 0x40638e
mov byte [esp + 0x1d], cl
movsx eax, byte [esi]
test eax, eax
je case.default.0x406792
mov dword [esp + 0x8c], 3
cmp eax, 0x25
je 0x406402
mov edi, esi
mov dword [esp + 0x18], edi
nop
mov al, byte [esi + 1]
inc esi
test al, al
je 0x4063bc
cmp al, 0x25
jne 0x4063b0
mov eax, dword [edx + 0x10]
mov ecx, esi
sub ecx, edi
add eax, ecx
cmp eax, dword [edx + 8]
jb 0x4063db
push ecx
mov ecx, dword [esp + 0x34]
mov edx, edi
call fcn.004083a0
add esp, 4
jmp 0x4063f5
test ecx, ecx
je 0x4063f9
mov eax, dword [edx + 4]
add dword [edx + 0x10], ecx
sub eax, ecx
add eax, dword [edx + 0x10]
push ecx
push edi
push eax
call fcn.00562cb0
add esp, 0xc
mov edx, dword [esp + 0x30]
cmp byte [esi], 0
je case.default.0x406792
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x7c], esi
test ecx, ecx
je 0x4080a6
or edi, 0xffffffff
mov byte [esp + 0x3b], 0
mov byte [esp + 0x1e], 0
mov byte [esp + 0x1f], 0
mov byte [esp + 0x2a], 0
mov byte [esp + 0x1c], 0
mov byte [esp + 0x12], 0
mov byte [esp + 0x13], 0
mov dword [esp + 0x20], 0
mov byte [esp + 0x2b], 0
mov dword [esp + 0x48], edi
nop word [eax + eax]
lea eax, [ecx - 0x20]
cmp eax, 0x4c
ja case.0x406463.34
movzx eax, byte [eax + 0x408134]
jmp dword [eax*4 + 0x408104]
mov byte [esp + 0x12], 1
jmp 0x4066fb
mov byte [esp + 0x1c], 0x2b
jmp 0x4066fb
mov byte [esp + 0x1c], 0x20
jmp 0x4066fb
mov byte [esp + 0x1f], 1
jmp 0x4066fb
mov byte [esp + 0x1e], 1
jmp 0x4066fb
mov byte [esp + 0x3b], 1
jmp 0x4066fb
mov byte [esp + 0x2a], 0x2c
jmp 0x4066fb
inc esi
lea edx, [ecx - 0x30]
mov dword [esp + 0x7c], esi
movsx ecx, byte [esi]
cmp ecx, 0x30
jl 0x4064db
cmp ecx, 0x39
jg 0x4064d7
lea edx, [edx + edx*4]
inc esi
lea edx, [edx - 0x18]
lea edx, [ecx + edx*2]
movsx ecx, byte [esi]
cmp ecx, 0x30
jge 0x4064c0
mov dword [esp + 0x7c], esi
and edx, 0x7fffffff
mov dword [esp + 0x20], edx
cmp ecx, 0x2e
je 0x4066fa
jmp 0x4066f5
cmp byte [esp + 0x1d], 0
je 0x406595
mov eax, dword [esp + 0x78]
mov edx, dword [eax + 4]
cmp dword [eax], edx
jg 0x40651b
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov edx, dword [esp + 0x60]
jmp 0x4065a3
mov eax, dword [eax + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov edx, dword [esp + 0x78]
mov dword [edx + 4], eax
movzx eax, word [ecx + 0x10]
test al, 0x24
je 0x406544
mov edx, dword [ecx + 4]
mov eax, dword [ecx]
mov dword [esp + 0x64], edx
mov edx, eax
mov dword [esp + 0x20], eax
jmp 0x4065a7
test al, 8
je 0x40655d
movsd xmm0, qword [ecx]
call fcn.00428e20
mov dword [esp + 0x64], edx
mov edx, eax
mov dword [esp + 0x20], eax
jmp 0x4065a7
test al, 0x12
je 0x406578
cmp dword [ecx + 8], 0
je 0x406578
call fcn.00428e80
mov dword [esp + 0x64], edx
mov edx, eax
mov dword [esp + 0x20], eax
jmp 0x4065a7
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x60]
mov dword [esp + 0x64], edx
mov edx, eax
mov dword [esp + 0x20], eax
jmp 0x4065a7
mov eax, dword [esp + 0x2c]
add eax, 4
mov dword [esp + 0x2c], eax
mov edx, dword [eax - 4]
mov dword [esp + 0x20], edx
test edx, edx
jns 0x4065c8
mov byte [esp + 0x12], 1
cmp edx, 0x80000001
jl 0x4065c0
neg edx
mov dword [esp + 0x20], edx
jmp 0x4065c8
mov dword [esp + 0x20], 0
movsx ecx, byte [esi + 1]
lea eax, [esi + 1]
cmp ecx, 0x2e
je 0x4065dd
cmp ecx, 0x6c
jne 0x40670e
cmp byte [esp + 0x13], 0
jne case.0x406463.34
jmp 0x4066fb
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x7c], esi
cmp ecx, 0x2a
jne 0x4066c7
cmp byte [esp + 0x1d], 0
je 0x406686
mov edi, dword [esp + 0x78]
mov edx, dword [edi + 4]
cmp dword [edi], edx
jg 0x406624
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov edi, dword [esp + 0x60]
jmp 0x406694
mov eax, dword [edi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [edi + 4], eax
movzx eax, word [ecx + 0x10]
test al, 0x24
je 0x406643
mov edx, dword [ecx + 4]
mov edi, dword [ecx]
mov dword [esp + 0x64], edx
jmp 0x406694
test al, 8
je 0x406658
movsd xmm0, qword [ecx]
call fcn.00428e20
mov edi, eax
mov dword [esp + 0x64], edx
jmp 0x406694
test al, 0x12
je 0x40666f
cmp dword [ecx + 8], 0
je 0x40666f
call fcn.00428e80
mov edi, eax
mov dword [esp + 0x64], edx
jmp 0x406694
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov edx, dword [esp + 0x64]
mov edi, dword [esp + 0x60]
mov dword [esp + 0x64], edx
jmp 0x406694
mov eax, dword [esp + 0x2c]
add eax, 4
mov dword [esp + 0x2c], eax
mov edi, dword [eax - 4]
mov dword [esp + 0x48], edi
test edi, edi
jns 0x4066bc
cmp edi, 0x80000001
jl 0x4066b5
movsx ecx, byte [esi + 1]
neg edi
inc esi
mov dword [esp + 0x48], edi
mov dword [esp + 0x7c], esi
jmp 0x4066f5
or edi, 0xffffffff
mov dword [esp + 0x48], edi
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x7c], esi
jmp 0x4066f5
xor edi, edi
cmp ecx, 0x30
jl 0x4066eb
nop
cmp ecx, 0x39
jg 0x4066e7
lea edi, [edi + edi*4]
inc esi
lea edi, [edi - 0x18]
lea edi, [ecx + edi*2]
movsx ecx, byte [esi]
cmp ecx, 0x30
jge 0x4066d0
mov dword [esp + 0x7c], esi
and edi, 0x7fffffff
mov dword [esp + 0x48], edi
cmp ecx, 0x6c
jne case.0x406463.34
dec esi
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x7c], esi
test ecx, ecx
jne 0x406450
jmp case.0x406463.34
movsx ecx, byte [eax]
mov dword [esp + 0x7c], eax
jmp case.0x406463.34
movsx ecx, byte [esi + 1]
inc esi
mov byte [esp + 0x2b], 1
mov dword [esp + 0x7c], esi
cmp ecx, 0x6c
jne case.0x406463.34
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x7c], esi
mov byte [esp + 0x2b], 2
mov dword [esp + 0x4c], 0x5d6e28
xor esi, esi
mov byte [esp + 0x13], 0x11
mov edx, 0x5d6e28
nop dword [eax]
movsx eax, byte [edx]
cmp ecx, eax
je 0x40676d
add edx, 6
inc esi
cmp edx, 0x5d6eb2
jl 0x406750
mov ecx, dword [esp + 0x4c]
mov dl, byte [esp + 0x13]
jmp 0x406786
lea eax, [esi + esi*2]
mov dl, byte [eax*2 + 0x5d6e2b]
lea ecx, [eax*2 + 0x5d6e28]
mov dword [esp + 0x4c], ecx
mov byte [esp + 0x13], dl
movzx eax, dl
cmp eax, 0x10
ja case.default.0x406792
jmp dword [eax*4 + 0x408184]
mov al, 1
mov byte [esp + 0x2b], al
mov byte [esp + 0x2a], 0
test byte [ecx + 2], 1
je 0x40689a
cmp byte [esp + 0x1d], 0
je 0x406844
mov esi, dword [esp + 0x78]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jg 0x4067e2
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
mov cl, byte [esp + 0x1c]
mov dword [esp + 0x24], edx
jmp 0x406941
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
movzx eax, word [ecx + 0x10]
test al, 0x24
je 0x406801
mov edx, dword [ecx + 4]
mov esi, dword [ecx]
mov dword [esp + 0x24], edx
jmp 0x406873
test al, 8
je 0x406816
movsd xmm0, qword [ecx]
call fcn.00428e20
mov esi, eax
mov dword [esp + 0x24], edx
jmp 0x406873
test al, 0x12
je 0x40682d
cmp dword [ecx + 8], 0
je 0x40682d
call fcn.00428e80
mov esi, eax
mov dword [esp + 0x24], edx
jmp 0x406873
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x24], edx
jmp 0x406873
mov al, byte [esp + 0x2b]
test al, al
je 0x406862
cmp al, 2
mov eax, dword [esp + 0x2c]
jne 0x406866
mov esi, dword [eax]
add eax, 8
mov dword [esp + 0x2c], eax
mov edx, dword [eax - 4]
jmp 0x406873
mov eax, dword [esp + 0x2c]
add eax, 4
mov dword [esp + 0x2c], eax
mov eax, dword [eax - 4]
cdq
mov esi, eax
test edx, edx
jg 0x4067d5
jl 0x406885
test esi, esi
jae 0x4067d5
not esi
not edx
add esi, 1
mov cl, 0x2d
adc edx, 0
mov dword [esp + 0x24], edx
jmp 0x40693d
cmp byte [esp + 0x1d], 0
je 0x40690e
mov esi, dword [esp + 0x78]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jle 0x4068f7
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
movzx eax, word [ecx + 0x10]
test al, 0x24
je 0x4068cb
mov edx, dword [ecx + 4]
mov esi, dword [ecx]
mov dword [esp + 0x24], edx
jmp 0x40693b
test al, 8
je 0x4068e0
movsd xmm0, qword [ecx]
call fcn.00428e20
mov esi, eax
mov dword [esp + 0x24], edx
jmp 0x40693b
test al, 0x12
je 0x4068f7
cmp dword [ecx + 8], 0
je 0x4068f7
call fcn.00428e80
mov esi, eax
mov dword [esp + 0x24], edx
jmp 0x40693b
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x24], edx
jmp 0x40693b
mov al, byte [esp + 0x2b]
test al, al
je 0x406928
cmp al, 2
mov eax, dword [esp + 0x2c]
jne 0x40692c
mov esi, dword [eax]
add eax, 8
mov edx, dword [eax - 4]
jmp 0x406933
mov eax, dword [esp + 0x2c]
mov esi, dword [eax]
add eax, 4
xor edx, edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], edx
xor cl, cl
mov byte [esp + 0x1c], cl
mov eax, esi
or eax, edx
jne 0x40694b
mov byte [esp + 0x1f], al
cmp byte [esp + 0x3b], 0
je 0x406968
xor eax, eax
test cl, cl
mov ecx, dword [esp + 0x20]
setne al
sub ecx, eax
cmp edi, ecx
cmovl edi, ecx
mov dword [esp + 0x48], edi
cmp edi, 0x25
jge 0x406983
mov eax, 0x46
lea ecx, [esp + 0x90]
mov dword [esp + 0x50], eax
mov dword [esp + 0x58], ecx
jmp 0x4069dd
mov eax, edi
cdq
add eax, 0xa
mov ecx, edx
mov dword [esp + 0x50], eax
adc ecx, 0
cmp byte [esp + 0x2a], 0
je 0x4069b2
mov eax, 0x55555556
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
add dword [esp + 0x50], eax
mov eax, dword [esp + 0x50]
adc ecx, edx
push ecx
mov ecx, dword [esp + 0x34]
push eax
call fcn.00406290
add esp, 8
mov dword [esp + 0x88], eax
mov ecx, eax
mov dword [esp + 0x58], ecx
test eax, eax
je case.default.0x406792
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x50]
dec eax
add eax, ecx
cmp byte [esp + 0x13], 0xf
mov dword [esp + 0x18], eax
jne 0x406a49
push 0
push 0xa
push edx
push esi
call fcn.00589c80
mov dword [esp + 0x34], eax
lea ecx, [eax + eax*4]
mov eax, esi
add ecx, ecx
sub eax, ecx
mov dword [esp + 0x40], eax
cmp eax, 4
jge 0x406a23
push 0
push 0xa
push edx
push dword [esp + 0x40]
call fcn.00589cf0
cmp eax, 1
jne 0x406a27
test edx, edx
jne 0x406a27
xor edx, edx
jmp 0x406a2b
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x18]
mov al, byte [edx*2 + 0x5d77c1]
mov byte [ecx - 1], al
sub ecx, 2
mov al, byte [edx*2 + str.thstndrd]
mov dword [esp + 0x18], ecx
mov byte [ecx], al
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x18]
movzx eax, byte [ecx + 4]
add eax, str.0123456789ABCDEF0123456789abcdef
mov dword [esp + 0x3c], eax
movzx eax, byte [ecx + 1]
cdq
mov ecx, eax
mov eax, edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x40], eax
push ebx
push eax
push ecx
push edx
push esi
dec edi
call fcn.00589b70
mov dword [esp + 0x68], ebx
pop ebx
mov esi, eax
mov eax, dword [esp + 0x3c]
mov al, byte [ecx + eax]
mov ecx, dword [esp + 0x34]
mov byte [edi], al
mov eax, dword [esp + 0x40]
test edx, edx
ja 0x406a73
jb 0x406aa0
test esi, esi
jne 0x406a73
mov edx, dword [esp + 0x50]
mov esi, dword [esp + 0x58]
mov eax, esi
sub eax, edi
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x48]
lea ecx, [edx - 1]
add ecx, eax
cmp edi, ecx
jle 0x406ad2
mov eax, dword [esp + 0x18]
sub edi, ecx
add ecx, edi
dec eax
mov byte [eax], 0x30
sub edi, 1
jne 0x406ac5
mov dword [esp + 0x18], eax
cmp byte [esp + 0x2a], 0
mov edi, dword [esp + 0x18]
je 0x406b20
lea eax, [ecx - 1]
xor ecx, ecx
cdq
idiv dword [esp + 0x8c]
mov esi, eax
inc edx
sub edi, esi
mov dword [esp + 0x18], edi
test esi, esi
jle 0x406b18
lea eax, [esi + ecx]
mov al, byte [eax + edi]
mov byte [ecx + edi], al
sub edx, 1
jne 0x406b13
mov al, byte [esp + 0x2a]
inc ecx
dec esi
mov edx, 3
mov byte [ecx + edi], al
inc ecx
test esi, esi
jg 0x406af7
mov esi, dword [esp + 0x58]
mov edx, dword [esp + 0x50]
mov cl, byte [esp + 0x1c]
test cl, cl
je 0x406b2f
dec edi
mov dword [esp + 0x18], edi
mov byte [edi], cl
cmp byte [esp + 0x1f], 0
je 0x406b60
mov eax, dword [esp + 0x4c]
mov al, byte [eax + 5]
test al, al
je 0x406b60
movzx eax, al
add eax, 0x5d2450
mov cl, byte [eax]
test cl, cl
je 0x406b60
nop
dec edi
lea eax, [eax + 1]
mov byte [edi], cl
mov cl, byte [eax]
test cl, cl
jne 0x406b50
mov dword [esp + 0x18], edi
sub esi, edi
dec edx
add edx, esi
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x20]
mov cl, byte [esp + 0x12]
sub eax, edx
mov dword [esp + 0x20], eax
test eax, eax
jle 0x408029
test cl, cl
jne 0x406bdb
mov esi, eax
xor ecx, ecx
cdq
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 0x10]
add eax, dword [esp + 0x40]
adc ecx, edx
js 0x406bbd
jg 0x406ba6
mov ecx, dword [esp + 0x30]
cmp eax, dword [ecx + 8]
jb 0x406bbd
mov ecx, dword [esp + 0x30]
push edx
push dword [esp + 0x44]
call fcn.004081f0
mov esi, eax
add esp, 8
test esi, esi
jle 0x406bd7
mov edi, dword [esp + 0x30]
mov eax, dword [edi + 0x10]
dec esi
mov ecx, dword [edi + 4]
mov byte [ecx + eax], 0x20
inc dword [edi + 0x10]
test esi, esi
jg 0x406bc1
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x30]
mov eax, dword [esi + 0x10]
add eax, edx
cmp eax, dword [esi + 8]
jb 0x407fad
push edx
mov edx, edi
mov ecx, esi
call fcn.004083a0
add esp, 4
jmp 0x407fc7
cmp byte [esp + 0x1d], 0
je 0x406c79
mov esi, dword [esp + 0x78]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jle 0x406c6a
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
movzx eax, word [ecx + 0x10]
test al, 8
je 0x406c35
movsd xmm1, qword [ecx]
mov dl, byte [esp + 0x13]
movsd qword [esp + 0x60], xmm1
jmp 0x406c8f
test al, 0x24
je 0x406c52
mov edx, dword [ecx + 4]
mov ecx, dword [ecx]
call fcn.0058a690
mov dl, byte [esp + 0x13]
movaps xmm1, xmm0
movsd qword [esp + 0x60], xmm1
jmp 0x406c8f
test al, 0x12
je 0x406c6a
call fcn.00428f00
mov dl, byte [esp + 0x13]
movaps xmm1, xmm0
movsd qword [esp + 0x60], xmm0
jmp 0x406c8f
mov dl, byte [esp + 0x13]
xorps xmm1, xmm1
movsd qword [esp + 0x60], xmm1
jmp 0x406c8f
mov eax, dword [esp + 0x2c]
add eax, 8
mov dword [esp + 0x2c], eax
movsd xmm1, qword [eax - 8]
movsd qword [esp + 0x60], xmm1
test edi, edi
jns 0x406c9a
mov edi, 6
jmp 0x406ca8
cmp edi, 0x5f5e100
mov eax, 0x5f5e100
cmovg edi, eax
xorps xmm2, xmm2
mov dword [esp + 0x48], edi
comisd xmm2, xmm1
jbe 0x406cc7
xorps xmm1, xmmword [0x5e6810]
movsd qword [esp + 0x60], xmm1
mov byte [esp + 0x1c], 0x2d
xor esi, esi
mov dword [esp + 0x24], esi
cmp dl, 3
jne 0x406cdb
test edi, edi
jle 0x406cdb
dec edi
mov dword [esp + 0x48], edi
movsd xmm0, qword [0x5e6738]
comisd xmm0, xmm1
jbe 0x406dd0
movaps xmm0, xmm1
call fcn.0058a530
mov ecx, edx
mov dword [esp + 0x34], eax
mov dword [esp + 0x50], ecx
mov ecx, eax
call fcn.0058a650
movsd xmm1, qword [esp + 0x60]
ucomisd xmm1, xmm0
lahf
test ah, 0x44
jp 0x406dcd
xor ecx, ecx
mov eax, 1
mov dword [esp + 0x80], eax
mov dword [esp + 0x3c], ecx
cmp dword [esp + 0x50], ecx
jb 0x406d8b
ja 0x406d3b
cmp dword [esp + 0x34], 0xa
jb 0x406d8b
mov edx, 0xa
xor esi, esi
inc dword [esp + 0x24]
mov eax, esi
mov dword [esp + 0x3c], eax
mov ecx, esi
mov eax, edx
mov edi, edx
shld ecx, eax, 2
mov dword [esp + 0x80], edi
shl eax, 2
add edx, eax
adc esi, ecx
shld esi, edx, 1
add edx, edx
cmp esi, dword [esp + 0x50]
jb 0x406d42
ja 0x406d78
cmp edx, dword [esp + 0x34]
jbe 0x406d42
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x3c]
cmp esi, edi
jle 0x40708e
cmp byte [esp + 0x13], 1
je 0x40708e
mov edx, ecx
mov esi, edi
shrd eax, edx, 1
shr edx, 1
test edi, edi
jle 0x406dc0
nop dword [eax]
push 0
push 0xa
push edx
push eax
dec esi
call fcn.00589c80
test esi, esi
jg 0x406db0
add dword [esp + 0x34], eax
adc dword [esp + 0x50], edx
jmp 0x40708e
xorps xmm2, xmm2
mov esi, edi
mov eax, 0xcccccccd
and esi, 0xfff
xorps xmm0, xmm0
mul esi
movlpd qword [esp + 0x58], xmm0
movlpd qword [esp + 0x40], xmm0
mov eax, esi
shr edx, 3
lea ecx, [edx + edx*4]
add ecx, ecx
sub eax, ecx
movsd xmm3, qword [eax*8 + 0x5d7c50]
cmp esi, 0xa
jb 0x406e19
movsd xmm0, qword [0x5e6648]
mulsd xmm3, xmm0
sub edx, 1
jne 0x406e10
mov dl, byte [esp + 0x13]
cmp dl, 1
jne 0x406e76
movsd qword [esp + 0x60], xmm1
mov eax, 0x55555556
mov ecx, dword [esp + 0x64]
shr ecx, 0x14
and ecx, 0x7ff
sub ecx, 0x3ff
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, edi
cmp eax, 0xf
jge 0x406e62
movaps xmm0, xmm1
mulsd xmm0, qword [0x5e6640]
addsd xmm0, xmm3
movaps xmm3, xmm0
mov dl, byte [esp + 0x13]
movaps xmm0, xmm3
addsd xmm0, xmm1
movaps xmm1, xmm0
movsd qword [esp + 0x60], xmm1
movsd qword [esp + 0x50], xmm1
mov ecx, dword [esp + 0x54]
mov eax, ecx
and eax, 0x7ff00000
xor esi, esi
jne 0x406ec6
cmp eax, 0x7ff00000
jne 0x406ec6
mov eax, dword [esp + 0x50]
and ecx, 0xfffff
or eax, ecx
je 0x406ec6
mov al, byte [esp + 0x3b]
mov edi, 0x5cbbd4
test al, al
mov ecx, str.null
cmovne edi, ecx
xor edx, edx
test al, al
mov dword [esp + 0x18], edi
setne dl
add edx, 3
jmp 0x406b65
comisd xmm1, xmm2
jbe 0x40706b
movsd xmm4, qword [0x5e6750]
comisd xmm1, xmm4
mov eax, dword [esp + 0x24]
movsd xmm5, qword [0x5e6670]
movaps xmm2, xmm5
jb 0x406f0f
nop dword [eax]
cmp eax, 0x15e
jg 0x406f0b
mulsd xmm2, xmm4
add eax, 0x64
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x406ef0
mov dword [esp + 0x24], eax
movsd xmm4, qword [0x5e6710]
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jb 0x406f3f
cmp eax, 0x15e
jg 0x406f3b
movaps xmm2, xmm0
add eax, 0xa
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x406f24
mov dword [esp + 0x24], eax
movsd xmm4, qword [0x5e6688]
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jb 0x406f6d
cmp eax, 0x15e
jg 0x406f69
movaps xmm2, xmm0
inc eax
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x406f54
mov dword [esp + 0x24], eax
divsd xmm1, xmm2
movsd xmm0, qword [0x5e6650]
comisd xmm0, xmm1
movsd qword [esp + 0x60], xmm1
jbe 0x406fa7
movsd xmm2, qword [0x5e66f0]
nop dword [eax]
mulsd xmm1, xmm2
sub eax, 8
comisd xmm0, xmm1
ja 0x406f90
mov dword [esp + 0x24], eax
movsd qword [esp + 0x60], xmm1
comisd xmm5, xmm1
jbe 0x406fc5
nop dword [eax]
mulsd xmm1, xmm4
dec eax
comisd xmm5, xmm1
ja 0x406fb0
mov dword [esp + 0x24], eax
movsd qword [esp + 0x60], xmm1
cmp eax, 0x15e
jle 0x406fea
cmp byte [esp + 0x3b], 0
je 0x40703b
movsd xmm1, qword [0x5e6680]
mov eax, 0x3e7
movsd qword [esp + 0x60], xmm1
mov dword [esp + 0x24], eax
cmp dl, 1
je 0x40706b
addsd xmm1, xmm3
comisd xmm1, xmm4
movsd qword [esp + 0x60], xmm1
jb 0x40706b
mulsd xmm1, qword [0x5e6660]
inc eax
mov ecx, dword [esp + 0x5c]
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x58]
movsd qword [esp + 0x60], xmm1
mov dword [esp + 0x24], eax
mov dword [esp + 0x50], esi
mov dword [esp + 0x34], edx
mov dword [esp + 0x80], ecx
jmp 0x407092
mov cl, byte [esp + 0x1c]
lea edi, [esp + 0x90]
xor eax, eax
mov byte [esp + 0x90], cl
test cl, cl
mov dword [esp + 0x18], edi
setne al
mov dword [esp + eax + 0x90], 0x666e49
lea edx, [eax + 3]
jmp 0x406b65
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x24]
mov cl, byte [esp + 0x13]
cmp cl, 3
jne 0x4071bd
cmp byte [esp + 0x1f], 0
sete byte [esp + 0x2b]
cmp eax, 0xfffffffc
jl 0x4071a9
cmp eax, edi
jg 0x4071a9
mov dl, byte [esp + 0x1e]
sub edi, eax
mov dword [esp + 0x48], edi
mov byte [esp + 0x13], 1
mov ecx, eax
mov dword [esp + 0x58], eax
movzx eax, dl
lea esi, [esp + 0x90]
lea eax, [eax + eax*4]
lea eax, [eax*2 + 0x10]
mov dword [esp + 0x40], eax
xor eax, eax
test ecx, ecx
cmovg eax, ecx
cdq
mov dword [esp + 0x18], eax
mov eax, edi
mov dword [esp + 0x14], edx
cdq
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
adc dword [esp + 0x14], edx
cdq
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
adc dword [esp + 0x14], edx
add eax, 0xf
mov edx, dword [esp + 0x14]
adc edx, 0
mov dword [esp + 0x18], eax
cmp byte [esp + 0x2a], 0
mov dword [esp + 0x14], edx
je 0x407152
test ecx, ecx
jle 0x407152
add ecx, 2
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
adc dword [esp + 0x14], edx
mov edx, dword [esp + 0x14]
test edx, edx
jl 0x40717c
jg 0x40715d
cmp eax, 0x46
jbe 0x40717c
mov ecx, dword [esp + 0x30]
push edx
push eax
call fcn.00406290
add esp, 8
mov dword [esp + 0x88], eax
mov esi, eax
test eax, eax
je case.default.0x406792
test edi, edi
mov dword [esp + 0x18], esi
setg al
or al, byte [esp + 0x1e]
or byte [esp + 0x1f], al
mov al, byte [esp + 0x1c]
test al, al
je 0x407198
mov byte [esi], al
inc esi
mov eax, dword [esp + 0x58]
test eax, eax
jns 0x4071d9
mov byte [esi], 0x30
inc esi
jmp 0x407305
mov dl, byte [esp + 0x1e]
xor ecx, ecx
mov byte [esp + 0x13], 2
mov dword [esp + 0x58], ecx
jmp 0x4070cf
mov dl, byte [esp + 0x1e]
mov byte [esp + 0x2b], dl
cmp cl, 2
jne 0x4070c9
xor ecx, ecx
mov dword [esp + 0x58], ecx
jmp 0x4070cf
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x80]
test ecx, ecx
jne 0x40725c
test eax, eax
jne 0x40725c
movsd xmm1, qword [esp + 0x60]
mov edi, dword [esp + 0x58]
mov eax, dword [esp + 0x40]
test eax, eax
jg 0x407202
mov al, 0x30
jmp 0x407221
dec eax
mov dword [esp + 0x40], eax
cvttsd2si eax, xmm1
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, qword [0x5e6688]
mov byte [esi], al
inc esi
cmp byte [esp + 0x2a], 0
je 0x407246
mov eax, 0xaaaaaaab
mov ecx, edi
mul edi
shr edx, 1
lea eax, [edx + edx*2]
sub ecx, eax
jne 0x407246
cmp edi, 1
jle 0x407246
mov byte [esi], 0x2c
inc esi
sub edi, 1
jns 0x4071f6
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x48]
mov eax, dword [esp + 0x58]
jmp 0x40730b
mov edi, dword [esp + 0x58]
push ecx
push eax
push dword [esp + 0x58]
push dword [esp + 0x40]
call fcn.00589c80
mov ecx, dword [esp + 0x3c]
push ecx
push dword [esp + 0x84]
mov dword [esp + 0x60], eax
push edx
push eax
call fcn.00589c40
sub dword [esp + 0x34], eax
mov ecx, dword [esp + 0x3c]
sbb dword [esp + 0x50], edx
mov eax, dword [esp + 0x80]
test ecx, ecx
jne 0x4072a2
cmp eax, 0xa
jb 0x4072b8
push 0
push 0xa
push ecx
push eax
call fcn.00589c80
mov dword [esp + 0x80], eax
mov dword [esp + 0x3c], edx
mov eax, dword [esp + 0x58]
and al, 0xf
add al, 0x30
mov byte [esi], al
inc esi
cmp byte [esp + 0x2a], 0
je 0x4072e5
mov eax, 0xaaaaaaab
mov ecx, edi
mul edi
shr edx, 1
lea eax, [edx + edx*2]
sub ecx, eax
jne 0x4072e5
cmp edi, 1
jle 0x4072e5
mov byte [esi], 0x2c
inc esi
sub edi, 1
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x3c]
jns 0x407260
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x48]
mov eax, dword [esp + 0x58]
movsd xmm1, qword [esp + 0x60]
cmp byte [esp + 0x1f], 0
mov edx, esi
mov dword [esp + 0x14], esi
je 0x407320
mov byte [edx], 0x2e
inc edx
mov dword [esp + 0x14], edx
lea esi, [eax + 1]
mov ecx, esi
neg ecx
test esi, esi
jns 0x4073de
cmp ecx, 8
jb 0x4073b1
and ecx, reloc.OLEAUT32.dll_VariantInit
jns 0x407345
dec ecx
or ecx, 0xfffffff8
inc ecx
movaps xmm0, xmmword [0x5e67e0]
xorps xmm2, xmm2
movaps xmm4, xmmword [0x5e67b0]
neg ecx
movaps xmmword [esp + 0x60], xmm0
movaps xmm3, xmm2
mov eax, dword [esp + 0x60]
movd xmm0, eax
add esi, 8
movd dword [edx], xmm0
psubd xmm2, xmm4
movd xmm0, eax
psubd xmm3, xmm4
movd dword [edx + 4], xmm0
add edx, 8
cmp esi, ecx
jl 0x407364
paddd xmm2, xmm3
mov dword [esp + 0x14], edx
movaps xmm0, xmm2
psrldq xmm0, 8
paddd xmm2, xmm0
movaps xmm0, xmm2
psrldq xmm0, 4
paddd xmm2, xmm0
movd eax, xmm2
add edi, eax
mov dword [esp + 0x48], edi
test esi, esi
jns 0x4073de
neg esi
mov edi, edx
mov ecx, esi
mov eax, 0x30303030
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
mov edx, dword [esp + 0x14]
and ecx, 3
add edx, esi
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x48]
mov dword [esp + 0x14], edx
sub edi, esi
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x80]
test ecx, ecx
jne 0x407435
test esi, esi
jne 0x407435
test edi, edi
jle 0x4074a0
nop dword [eax]
mov eax, dword [esp + 0x40]
dec edi
test eax, eax
jg 0x40740d
mov al, 0x30
jmp 0x40742c
dec eax
mov dword [esp + 0x40], eax
cvttsd2si eax, xmm1
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, qword [0x5e6688]
mov byte [edx], al
inc edx
test edi, edi
jg 0x407400
jmp 0x4074a0
test edi, edi
jle 0x4074a0
nop dword [eax]
push ecx
push esi
push dword [esp + 0x58]
dec edi
push dword [esp + 0x40]
call fcn.00589c80
mov ecx, dword [esp + 0x3c]
push ecx
push esi
push edx
push eax
mov dword [esp + 0x50], eax
call fcn.00589c40
sub dword [esp + 0x34], eax
mov ecx, dword [esp + 0x3c]
sbb dword [esp + 0x50], edx
test ecx, ecx
jne 0x407476
cmp esi, 0xa
jb 0x407489
push 0
push 0xa
push ecx
push esi
call fcn.00589c80
mov ecx, edx
mov esi, eax
mov dword [esp + 0x3c], ecx
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x40]
and al, 0xf
add al, 0x30
mov byte [edx], al
inc edx
mov dword [esp + 0x14], edx
test edi, edi
jg 0x407440
cmp byte [esp + 0x2b], 0
je 0x4074db
cmp byte [esp + 0x1f], 0
je 0x4074db
cmp byte [edx - 1], 0x30
lea eax, [edx - 1]
jne 0x4074c4
mov edx, eax
lea eax, [edx - 1]
mov byte [edx], 0
cmp byte [eax], 0x30
je 0x4074b7
cmp byte [edx - 1], 0x2e
jne 0x4074db
cmp byte [esp + 0x1e], 0
je 0x4074d7
mov byte [edx], 0x30
inc edx
jmp 0x4074db
dec edx
mov byte [edx], 0
cmp byte [esp + 0x13], 2
jne 0x407575
mov eax, dword [esp + 0x4c]
lea esi, [edx + 1]
mov ecx, dword [esp + 0x24]
movzx eax, byte [eax + 4]
mov al, byte [eax + str.0123456789ABCDEF0123456789abcdef]
mov byte [edx], al
test ecx, ecx
jns 0x40750c
neg ecx
mov byte [esi], 0x2d
mov dword [esp + 0x24], ecx
jmp 0x40750f
mov byte [esi], 0x2b
inc esi
mov dword [esp + 0x14], esi
cmp ecx, 0x64
jl 0x407542
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov al, cl
add al, 0x30
mov byte [esi], al
inc esi
imul eax, ecx, 0xffffff9c
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x14], esi
add ecx, eax
mov dword [esp + 0x24], ecx
mov eax, 0x66666667
imul ecx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [esp + 0x14]
mov al, cl
add al, 0x30
mov byte [edx], al
mov al, cl
shl cl, 2
add al, cl
mov ecx, dword [esp + 0x24]
add al, al
sub cl, al
add cl, 0x30
mov byte [edx + 1], cl
add edx, 2
mov edi, dword [esp + 0x18]
mov cl, byte [esp + 0x12]
mov eax, dword [esp + 0x20]
mov byte [edx], 0
sub edx, edi
cmp byte [esp + 0x3b], 0
mov dword [esp + 0x14], edx
je 0x406b71
test cl, cl
jne 0x406b71
cmp edx, eax
jge 0x406b71
mov esi, eax
mov ecx, eax
sub esi, edx
cmp eax, esi
jl 0x4075be
mov edx, edi
sub edx, esi
mov al, byte [edx + ecx]
mov byte [ecx + edi], al
dec ecx
cmp ecx, esi
jge 0x4075b3
mov cl, byte [esp + 0x1c]
xor eax, eax
test cl, cl
setne al
test esi, esi
je 0x4075e8
add edi, eax
mov ecx, esi
mov edx, ecx
mov eax, 0x30303030
shr ecx, 2
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 + 0x20]
mov edx, eax
mov dword [esp + 0x14], edx
jmp 0x406b6d
cmp byte [esp + 0x1d], 0
jne 0x407615
mov eax, dword [esp + 0x2c]
add eax, 4
mov dword [esp + 0x2c], eax
mov ecx, dword [eax - 4]
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 0x10]
mov dword [ecx], eax
mov edi, dword [esp + 0x18]
xor edx, edx
mov dword [esp + 0x14], edx
xor eax, eax
jmp 0x406b6d
lea edi, [esp + 0x90]
mov byte [esp + 0x90], 0x25
mov dword [esp + 0x18], edi
mov edx, 1
jmp 0x406b65
cmp byte [esp + 0x1d], 0
je 0x407711
mov esi, dword [esp + 0x78]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jle 0x4076fb
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
test ecx, ecx
je 0x4076fb
movzx edx, word [ecx + 0x10]
mov eax, edx
and eax, 0x202
cmp eax, 0x202
jne 0x40768e
cmp byte [ecx + 0x12], 1
jne 0x40768e
mov eax, dword [ecx + 8]
jmp 0x40769a
test dl, 1
jne 0x4076fb
mov dl, 1
call fcn.00429ab0
mov dword [esp + 0x40], eax
mov esi, 1
mov dword [esp + 0x14], esi
test eax, eax
je 0x407704
movsx ecx, byte [eax]
lea edx, [eax + 1]
mov byte [esp + 0x90], cl
and ecx, 0xc0
cmp cl, 0xc0
jne 0x4077e5
lea eax, [esp + 0x90]
sub eax, dword [esp + 0x40]
mov dword [esp + 0x40], eax
mov cl, byte [edx]
mov al, cl
and al, 0xc0
cmp al, 0x80
jne 0x4077e5
mov eax, dword [esp + 0x40]
inc esi
mov dword [esp + 0x14], esi
mov byte [eax + edx], cl
inc edx
cmp esi, 4
jl 0x4076d6
jmp 0x4077e5
mov esi, 1
mov dword [esp + 0x14], esi
mov byte [esp + 0x90], 0
jmp 0x4077e5
mov eax, dword [esp + 0x2c]
add eax, 4
mov dword [esp + 0x2c], eax
mov ecx, dword [eax - 4]
cmp ecx, 0x80
jae 0x407738
mov byte [esp + 0x90], cl
mov esi, 1
jmp 0x4077e1
mov eax, ecx
cmp ecx, 0x800
jae 0x407767
shr eax, 6
and cl, 0x3f
and al, 0x1f
mov esi, 2
sub al, 0x40
add cl, 0x80
mov byte [esp + 0x90], al
mov byte [esp + 0x91], cl
jmp 0x4077e1
cmp ecx, 0x10000
jae 0x4077a1
shr eax, 0xc
mov esi, 3
and al, 0xf
sub al, 0x20
mov byte [esp + 0x90], al
mov eax, ecx
shr eax, 6
and cl, 0x3f
and al, 0x3f
add al, 0x80
add cl, 0x80
mov byte [esp + 0x91], al
mov byte [esp + 0x92], cl
jmp 0x4077e1
shr eax, 0x12
mov esi, 4
and al, 7
sub al, 0x10
mov byte [esp + 0x90], al
mov eax, ecx
shr eax, 0xc
and al, 0x3f
add al, 0x80
mov byte [esp + 0x91], al
mov eax, ecx
shr eax, 6
and cl, 0x3f
and al, 0x3f
add al, 0x80
add cl, 0x80
mov byte [esp + 0x92], al
mov byte [esp + 0x93], cl
mov dword [esp + 0x14], esi
cmp edi, 1
jle 0x407963
mov edx, dword [esp + 0x20]
sub edx, edi
mov dword [esp + 0x4c], 1
mov eax, edx
mov dword [esp + 0x40], 0
inc edx
mov dword [esp + 0x20], edx
cmp edx, 1
jle 0x40782e
cmp byte [esp + 0x12], 0
jne 0x40782e
push 0x20
push eax
push dword [esp + 0x38]
call fcn.00408340
add esp, 0xc
mov dword [esp + 0x20], 0
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x10]
add eax, esi
cmp eax, dword [ecx + 8]
jb 0x40784e
push esi
lea edx, [esp + 0x94]
call fcn.004083a0
add esp, 4
jmp 0x40786f
test esi, esi
je 0x40786f
add dword [ecx + 0x10], esi
lea eax, [esp + 0x90]
push esi
push eax
mov eax, dword [ecx + 4]
sub eax, esi
add eax, dword [ecx + 0x10]
push eax
call fcn.00562cb0
add esp, 0xc
dec edi
cmp edi, 1
jle 0x407963
mov ecx, dword [esp + 0x40]
mov eax, esi
cdq
mov dword [esp + 0x50], eax
mov dword [esp + 0x58], edx
lea eax, [edi - 1]
cdq
mov esi, eax
cmp ecx, edx
jl 0x4078aa
jg 0x40789c
mov eax, dword [esp + 0x4c]
cmp eax, esi
jbe 0x4078ae
mov eax, esi
mov ecx, edx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x40], ecx
jmp 0x4078ae
mov eax, dword [esp + 0x4c]
push ecx
push eax
push dword [esp + 0x60]
push dword [esp + 0x5c]
call fcn.00589c40
mov esi, eax
xor ecx, ecx
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 0x10]
add eax, esi
adc ecx, edx
js 0x4078e7
jg 0x4078d9
mov ecx, dword [esp + 0x30]
cmp eax, dword [ecx + 8]
jb 0x4078e7
mov ecx, dword [esp + 0x30]
push edx
push esi
call fcn.004081f0
add esp, 8
mov edx, dword [esp + 0x30]
cmp byte [edx + 0x14], 0
jne 0x407963
mov eax, dword [edx + 0x10]
mov edx, dword [edx + 4]
mov ecx, edx
mov dword [esp + 0x34], edx
sub ecx, esi
mov edx, dword [esp + 0x30]
add ecx, eax
add eax, esi
cmp eax, dword [edx + 8]
mov edx, dword [esp + 0x34]
jb 0x407925
mov edx, ecx
mov ecx, dword [esp + 0x30]
push esi
call fcn.004083a0
add esp, 4
jmp 0x407942
test esi, esi
je 0x407942
mov eax, dword [esp + 0x30]
push esi
push ecx
add dword [eax + 0x10], esi
mov eax, dword [eax + 0x10]
sub eax, esi
add eax, edx
push eax
call fcn.00562cb0
add esp, 0xc
mov eax, dword [esp + 0x4c]
sub edi, eax
mov ecx, dword [esp + 0x40]
shld ecx, eax, 1
add eax, eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x4c], eax
cmp edi, 1
jg 0x407888
lea edi, [esp + 0x90]
mov dword [esp + 0x18], edi
jmp 0x407d87
cmp byte [esp + 0x1d], 0
je 0x4079d6
mov esi, dword [esp + 0x78]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jg 0x40798b
xor eax, eax
mov dl, 5
jmp 0x4079e4
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
test ecx, ecx
jne 0x4079a1
xor eax, eax
mov dl, 5
jmp 0x4079e4
movzx edx, word [ecx + 0x10]
mov eax, edx
and eax, 0x202
cmp eax, 0x202
jne 0x4079c0
cmp byte [ecx + 0x12], 1
jne 0x4079c0
mov eax, dword [ecx + 8]
mov dl, 5
jmp 0x4079e4
test dl, 1
je 0x4079cb
xor eax, eax
mov dl, 5
jmp 0x4079e4
mov dl, 1
call fcn.00429ab0
mov dl, 5
jmp 0x4079e4
mov eax, dword [esp + 0x2c]
add eax, 4
mov dword [esp + 0x2c], eax
mov eax, dword [eax - 4]
mov dword [esp + 0x18], eax
test eax, eax
jne 0x4079f7
mov eax, 0x5cbbd8
mov dword [esp + 0x18], eax
jmp 0x407a5b
cmp dl, 6
jne 0x407a5b
mov esi, dword [esp + 0x30]
cmp dword [esi + 0x10], 0
jne 0x407a52
cmp dword [esi + 0xc], 0
je 0x407a52
cmp dword [esp + 0x20], 0
jne 0x407a52
test edi, edi
jns 0x407a52
cmp byte [esi + 0x14], 0
jne 0x407a52
mov edi, dword [esp + 0x18]
mov edx, edi
mov ecx, dword [esi]
mov dword [esi + 4], edi
call fcn.00405810
mov ecx, edi
mov dword [esi + 8], eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x407a35
or byte [esi + 0x15], 4
sub ecx, edx
and ecx, 0x7fffffff
xor edx, edx
mov dword [esi + 0x10], ecx
jmp 0x406b65
mov ecx, eax
mov dword [esp + 0x88], ecx
test edi, edi
js 0x407ac8
cmp byte [esp + 0x1e], 0
je 0x407aa1
mov edx, eax
test edi, edi
jle 0x407a92
nop dword [eax]
mov al, byte [edx]
dec edi
test al, al
je 0x407a92
inc edx
cmp al, 0xc0
jb 0x407a8e
mov al, byte [edx]
and al, 0xc0
cmp al, 0x80
jne 0x407a8e
mov al, byte [edx + 1]
inc edx
and al, 0xc0
cmp al, 0x80
je 0x407a84
test edi, edi
jg 0x407a70
mov edi, dword [esp + 0x18]
sub edx, edi
mov dword [esp + 0x14], edx
jmp 0x407d7c
xor edx, edx
mov dword [esp + 0x14], edx
test edi, edi
jle 0x407abf
nop dword [eax + eax]
cmp byte [edx + eax], 0
je 0x407abf
inc edx
mov dword [esp + 0x14], edx
cmp edx, edi
jl 0x407ab0
mov edi, dword [esp + 0x18]
jmp 0x406b69
mov edi, dword [esp + 0x18]
mov edx, edi
lea ecx, [edx + 1]
mov al, byte [edx]
inc edx
test al, al
jne 0x407ad1
sub edx, ecx
and edx, 0x7fffffff
mov dword [esp + 0x14], edx
jmp 0x407d7c
cmp dl, 0xe
mov eax, 0x27
mov ecx, 0x22
cmove eax, ecx
cmp byte [esp + 0x1d], 0
mov dword [esp + 0x34], eax
je 0x407b62
mov esi, dword [esp + 0x78]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jg 0x407b19
mov dword [esp + 0x3c], 0
jmp 0x407b7c
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
test ecx, ecx
jne 0x407b2d
xor esi, esi
jmp 0x407b70
movzx edx, word [ecx + 0x10]
mov eax, edx
and eax, 0x202
cmp eax, 0x202
jne 0x407b4a
cmp byte [ecx + 0x12], 1
jne 0x407b4a
mov esi, dword [ecx + 8]
jmp 0x407b70
test dl, 1
je 0x407b53
xor esi, esi
jmp 0x407b70
mov dl, 1
call fcn.00429ab0
mov esi, eax
mov dword [esp + 0x50], eax
jmp 0x407b74
mov eax, dword [esp + 0x2c]
add eax, 4
mov dword [esp + 0x2c], eax
mov esi, dword [eax - 4]
mov dword [esp + 0x50], esi
mov dword [esp + 0x3c], esi
test esi, esi
jne 0x407b92
cmp byte [esp + 0x13], 0xa
mov esi, str.NULL
mov eax, str._NULL_
cmovne esi, eax
mov dword [esp + 0x50], esi
mov eax, edi
xorps xmm0, xmm0
cdq
mov dword [esp + 0x40], eax
mov eax, edx
mov edx, dword [esp + 0x40]
mov ecx, edx
movlpd qword [esp + 0x80], xmm0
or ecx, eax
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x84]
movlpd qword [esp + 0x60], xmm0
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x4c], eax
je 0x407c98
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x40], eax
mov al, byte [esi + ecx]
test al, al
je 0x407c36
cmp al, byte [esp + 0x34]
jne 0x407bf8
add dword [esp + 0x40], 1
adc dword [esp + 0x4c], 0
cmp byte [esp + 0x1e], 0
je 0x407c20
and al, 0xc0
cmp al, 0xc0
jne 0x407c20
mov al, byte [esi + ecx + 1]
and al, 0xc0
cmp al, 0x80
jne 0x407c20
nop
mov al, byte [esi + ecx + 2]
add esi, 1
adc edi, 0
and al, 0xc0
cmp al, 0x80
je 0x407c10
add esi, 1
adc edi, 0
add edx, 0xffffffff
mov eax, edx
adc dword [esp + 0x58], 0xffffffff
or eax, dword [esp + 0x58]
jne 0x407be1
mov edx, dword [esp + 0x40]
cmp dword [esp + 0x3c], 0
je 0x407c50
cmp byte [esp + 0x13], 0xa
mov dword [esp + 0x3c], 1
je 0x407c58
mov dword [esp + 0x3c], 0
mov ecx, esi
mov eax, edi
add ecx, 3
adc eax, 0
add edx, ecx
mov ecx, dword [esp + 0x4c]
adc ecx, eax
js 0x407ca1
jg 0x407c73
cmp edx, 0x46
jbe 0x407ca1
push ecx
mov ecx, dword [esp + 0x34]
push edx
call fcn.00406290
mov ecx, eax
add esp, 8
mov dword [esp + 0x88], ecx
mov dword [esp + 0x18], ecx
test ecx, ecx
je case.default.0x406792
jmp 0x407cac
mov edx, dword [esp + 0x80]
jmp 0x407c3a
lea eax, [esp + 0x90]
mov dword [esp + 0x18], eax
cmp dword [esp + 0x3c], 0
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
je 0x407cd1
mov ecx, dword [esp + 0x34]
mov edx, 1
mov byte [eax], cl
mov dword [esp + 0x58], 0
jmp 0x407cdd
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
mov dword [esp + 0x58], eax
mov dword [esp + 0x14], edx
movlpd qword [esp + 0x60], xmm0
test edi, edi
jl 0x407d5f
jg 0x407cf9
test esi, esi
je 0x407d5f
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x4c], ecx
nop dword [eax]
mov cl, byte [ecx + eax]
mov eax, dword [esp + 0x18]
mov byte [edx + eax], cl
add edx, 1
mov eax, dword [esp + 0x50]
adc dword [esp + 0x58], 0
cmp cl, byte [esp + 0x34]
jne 0x407d3f
mov eax, dword [esp + 0x18]
mov byte [edx + eax], cl
add edx, 1
mov eax, dword [esp + 0x50]
adc dword [esp + 0x58], 0
mov ecx, dword [esp + 0x4c]
add ecx, 1
mov dword [esp + 0x4c], ecx
adc dword [esp + 0x40], 0
cmp dword [esp + 0x40], edi
jl 0x407d10
jg 0x407d5b
cmp ecx, esi
jb 0x407d10
mov dword [esp + 0x14], edx
cmp dword [esp + 0x3c], 0
mov edi, dword [esp + 0x18]
je 0x407d78
mov eax, dword [esp + 0x34]
mov byte [edx + edi], al
add edx, 1
mov dword [esp + 0x14], edx
mov byte [edx + edi], 0
cmp byte [esp + 0x1e], 0
je 0x406b69
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
test eax, eax
jle 0x406b6d
lea esi, [edx - 1]
test esi, esi
js 0x406b6d
mov edx, eax
mov cl, byte [esi + edi]
lea eax, [edx + 1]
and cl, 0xc0
cmp cl, 0x80
cmovne eax, edx
sub esi, 1
mov edx, eax
jns 0x407da4
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x14]
jmp 0x406b69
mov edi, dword [esp + 0x30]
test byte [edi + 0x15], 1
je case.default.0x406792
mov eax, dword [esp + 0x2c]
add eax, 4
cmp byte [esp + 0x1f], 0
mov dword [esp + 0x2c], eax
mov esi, dword [eax - 4]
je 0x407e25
test esi, esi
je 0x407e82
test dword [esi + 4], 0x800
jne 0x407e82
push dword [esi + 8]
push edi
call fcn.00408430
mov ecx, dword [edi]
add esp, 8
mov edx, esi
call fcn.004081d0
mov edi, dword [esp + 0x18]
xor edx, edx
mov dword [esp + 0x14], edx
xor eax, eax
jmp 0x406b6d
test esi, esi
je 0x407e82
mov eax, dword [esi + 4]
test eax, eax
je 0x407e82
push eax
push dword [esi]
push edi
call fcn.004083e0
mov edi, dword [edi]
add esp, 0xc
mov esi, dword [esi]
test edi, edi
je 0x407e82
cmp dword [edi + 0x44], 0xfffffffe
jne 0x407e82
mov edx, dword [edi + 0x10c]
test edx, edx
je 0x407e82
mov edx, dword [edx + 0xf0]
test edx, edx
je 0x407e82
mov ecx, edx
lea eax, [ecx + 1]
mov dword [esp + 0x40], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x407e67
sub ecx, dword [esp + 0x40]
cmp esi, edx
jb 0x407e82
lea eax, [edx + ecx]
cmp esi, eax
jae 0x407e82
sub esi, edx
mov dword [edi + 0x44], esi
mov edi, dword [esp + 0x18]
xor edx, edx
mov dword [esp + 0x14], edx
xor eax, eax
jmp 0x406b6d
mov edi, dword [esp + 0x30]
test byte [edi + 0x15], 1
je case.default.0x406792
mov eax, dword [esp + 0x2c]
add eax, 4
mov dword [esp + 0x2c], eax
mov esi, dword [eax - 4]
mov eax, dword [esi + 0xc]
test eax, eax
je 0x407ed8
cmp byte [esp + 0x1e], 0
jne 0x407ed8
push eax
push edi
call fcn.00408430
mov edi, dword [esp + 0x20]
xor edx, edx
add esp, 8
mov dword [esp + 0x14], edx
xor eax, eax
jmp 0x406b6d
cmp dword [esi + 8], 0
je 0x407f59
mov eax, dword [esi + 4]
test eax, eax
je 0x407f3c
push eax
push edi
call fcn.00408430
mov eax, dword [edi + 0x10]
add esp, 8
inc eax
cmp eax, dword [edi + 8]
jb 0x407f2a
push 1
mov edx, 0x5cbbec
mov ecx, edi
call fcn.004083a0
add esp, 4
push dword [esi + 8]
push edi
call fcn.00408430
mov edi, dword [esp + 0x20]
xor edx, edx
add esp, 8
mov dword [esp + 0x14], edx
xor eax, eax
jmp 0x406b6d
inc dword [edi + 0x10]
mov edx, dword [edi + 0x10]
mov ecx, dword [edi + 4]
mov al, byte [0x5cbbec]
mov byte [ecx + edx - 1], al
push dword [esi + 8]
push edi
call fcn.00408430
mov edi, dword [esp + 0x20]
xor edx, edx
add esp, 8
mov dword [esp + 0x14], edx
xor eax, eax
jmp 0x406b6d
test eax, eax
je 0x407f78
push eax
push edi
call fcn.00408430
mov edi, dword [esp + 0x20]
xor edx, edx
add esp, 8
mov dword [esp + 0x14], edx
xor eax, eax
jmp 0x406b6d
mov eax, dword [esi + 0x14]
test dword [eax + 4], 0x800
push dword [eax + 0x10]
je 0x407f8e
push str._join__u_
jmp 0x407f93
push str._subquery__u_
push edi
call fcn.00408aa0
mov edi, dword [esp + 0x24]
xor edx, edx
add esp, 0xc
mov dword [esp + 0x14], edx
xor eax, eax
jmp 0x406b6d
test edx, edx
je 0x407fc7
mov eax, dword [esi + 4]
add dword [esi + 0x10], edx
sub eax, edx
add eax, dword [esi + 0x10]
push edx
push edi
push eax
call fcn.00562cb0
add esp, 0xc
cmp byte [esp + 0x12], 0
je 0x408060
mov eax, dword [esp + 0x20]
xor ecx, ecx
mov esi, dword [esi + 0x10]
cdq
add esi, eax
adc ecx, edx
js 0x40800d
jg 0x407fed
mov ecx, dword [esp + 0x30]
cmp esi, dword [ecx + 8]
jb 0x408009
mov esi, dword [esp + 0x30]
mov ecx, esi
push edx
push eax
call fcn.004081f0
mov edx, eax
add esp, 8
test edx, edx
jle 0x408060
jmp 0x408015
mov esi, ecx
jmp 0x408011
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
mov eax, dword [esi + 0x10]
dec edx
mov ecx, dword [esi + 4]
mov byte [ecx + eax], 0x20
inc dword [esi + 0x10]
test edx, edx
jg 0x408015
jmp 0x408060
mov esi, dword [esp + 0x30]
mov eax, dword [esi + 0x10]
add eax, edx
cmp eax, dword [esi + 8]
jb 0x408046
push edx
mov edx, edi
mov ecx, esi
call fcn.004083a0
add esp, 4
jmp 0x408060
test edx, edx
je 0x408060
mov eax, dword [esi + 4]
add dword [esi + 0x10], edx
sub eax, edx
add eax, dword [esi + 0x10]
push edx
push edi
push eax
call fcn.00562cb0
add esp, 0xc
mov ecx, dword [esp + 0x88]
test ecx, ecx
je 0x40807d
mov edx, ecx
mov ecx, dword [esi]
call fcn.004059a0
xor ecx, ecx
mov dword [esp + 0x88], ecx
mov esi, dword [esp + 0x7c]
mov edx, dword [esp + 0x30]
inc esi
movsx eax, byte [esi]
test eax, eax
jne 0x4063a4
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.00533fc6
mov esp, ebp
pop ebp
ret
mov eax, dword [edx + 0x10]
inc eax
cmp eax, dword [edx + 8]
jb 0x4080d7
mov ecx, dword [esp + 0x30]
mov edx, 0x5cbbc8
push 1
call fcn.004083a0
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.00533fc6
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x30]
inc dword [edx + 0x10]
mov edx, dword [edx + 0x10]
mov ecx, dword [eax + 4]
mov al, byte [0x5cbbc8]
mov byte [ecx + edx - 1], al
mov ecx, dword [esp + 0xdc]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00533fc6
mov esp, ebp
pop ebp
ret