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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xbc
mov eax, dword [0x100c7034]
xor eax, esp
mov dword [esp + 0xb8], eax
mov edx, dword [ebp + 8]
xor eax, eax
mov ecx, dword [ebp + 0x10]
push ebx
push esi
test byte [edx + 0x15], 2
mov esi, dword [ebp + 0xc]
push edi
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x64], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x1c], eax
je 0x10019c16
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x28], ecx
mov dword [esp + 0x60], eax
mov byte [esp + 0x1a], 1
jmp 0x10019c1a
mov byte [esp + 0x1a], al
movsx eax, byte [esi]
test eax, eax
je case.default.0x10019f02
cmp eax, 0x25
je 0x10019c83
mov ecx, esi
mov dword [esp + 0x1c], ecx
mov al, byte [esi + 1]
inc esi
test al, al
je 0x10019c3c
cmp al, 0x25
jne 0x10019c30
mov eax, dword [esp + 0x14]
mov edx, esi
sub edx, ecx
mov edi, dword [eax + 0x10]
add edi, edx
cmp edi, dword [eax + 8]
jb 0x10019c5d
push edx
mov edx, ecx
mov ecx, eax
call fcn.1001b2a0
add esp, 4
jmp 0x10019c76
test edx, edx
je 0x10019c76
mov dword [eax + 0x10], edi
mov eax, dword [eax + 4]
push edx
sub eax, edx
push ecx
add eax, edi
push eax
call sub.MSVCR120.dll_memcpy
add esp, 0xc
cmp byte [esi], 0
je case.default.0x10019f02
mov edx, dword [esp + 0x14]
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x54], esi
test ecx, ecx
je 0x1001afca
or edi, 0xffffffff
mov byte [esp + 0x37], 0
mov byte [esp + 0x2e], 0
mov byte [esp + 0x22], 0
mov byte [esp + 0x23], 0
mov byte [esp + 0x1b], 0
mov byte [esp + 0x13], 0
mov dword [esp + 0x24], 0
mov byte [esp + 0x2f], 0
mov dword [esp + 0x3c], edi
jmp 0x10019cd0
lea eax, [ecx - 0x20]
cmp eax, 0x4c
ja case.0x10019ce3.34
movzx eax, byte [eax + 0x1001b054]
jmp dword [eax*4 + 0x1001b024]
mov byte [esp + 0x13], 1
jmp 0x10019e72
mov byte [esp + 0x1b], 0x2b
jmp 0x10019e72
mov byte [esp + 0x1b], 0x20
jmp 0x10019e72
mov byte [esp + 0x22], 1
jmp 0x10019e72
mov byte [esp + 0x2e], 1
jmp 0x10019e72
mov byte [esp + 0x37], 1
jmp 0x10019e72
mov byte [esp + 0x23], 0x2c
jmp 0x10019e72
inc esi
lea edx, [ecx - 0x30]
mov dword [esp + 0x54], esi
movsx ecx, byte [esi]
cmp ecx, 0x30
jl 0x10019d5b
cmp ecx, 0x39
jg 0x10019d57
lea edx, [edx + edx*4]
inc esi
lea edx, [edx - 0x18]
lea edx, [ecx + edx*2]
movsx ecx, byte [esi]
cmp ecx, 0x30
jge 0x10019d40
mov dword [esp + 0x54], esi
and edx, 0x7fffffff
mov dword [esp + 0x24], edx
cmp ecx, 0x2e
je 0x10019e71
jmp 0x10019e6c
cmp byte [esp + 0x1a], 0
je 0x10019d8b
mov ecx, dword [esp + 0x60]
call fcn.10019a40
mov edx, eax
mov dword [esp + 0x24], eax
jmp 0x10019d9d
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x28], eax
mov edx, dword [eax - 4]
mov dword [esp + 0x24], edx
test edx, edx
jns 0x10019dbe
mov byte [esp + 0x13], 1
cmp edx, 0x80000001
jl 0x10019db6
neg edx
mov dword [esp + 0x24], edx
jmp 0x10019dbe
mov dword [esp + 0x24], 0
movsx eax, byte [esi + 1]
cmp eax, 0x2e
je 0x10019e72
cmp eax, 0x6c
jne 0x10019e9d
jmp 0x10019e72
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x54], esi
cmp ecx, 0x2a
jne 0x10019e40
cmp byte [esp + 0x1a], 0
je 0x10019dff
mov ecx, dword [esp + 0x60]
call fcn.10019a40
mov edi, eax
mov dword [esp + 0x3c], eax
jmp 0x10019e11
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x28], eax
mov edi, dword [eax - 4]
mov dword [esp + 0x3c], edi
test edi, edi
jns 0x10019e35
cmp edi, 0x80000001
jl 0x10019e2e
movsx ecx, byte [esi + 1]
neg edi
inc esi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x54], esi
jmp 0x10019e6c
or edi, 0xffffffff
mov dword [esp + 0x3c], edi
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x54], esi
jmp 0x10019e6c
xor edi, edi
cmp ecx, 0x30
jl 0x10019e62
cmp ecx, 0x39
jg 0x10019e5e
lea edi, [edi + edi*4]
inc esi
lea edi, [edi - 0x18]
lea edi, [ecx + edi*2]
movsx ecx, byte [esi]
cmp ecx, 0x30
jge 0x10019e47
mov dword [esp + 0x54], esi
and edi, 0x7fffffff
mov dword [esp + 0x3c], edi
cmp ecx, 0x6c
jne case.0x10019ce3.34
dec esi
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x54], esi
test ecx, ecx
jne 0x10019cd0
jmp case.0x10019ce3.34
movsx ecx, byte [esi + 1]
inc esi
mov byte [esp + 0x2f], 1
mov dword [esp + 0x54], esi
cmp ecx, 0x6c
jne case.0x10019ce3.34
mov byte [esp + 0x2f], 2
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x54], esi
mov dword [esp + 0x50], 0x100bb750
xor esi, esi
mov byte [esp + 0x19], 0x11
mov edx, 0x100bb750
lea ebx, [ebx]
movsx eax, byte [edx]
cmp ecx, eax
je 0x10019edd
add edx, 6
inc esi
cmp edx, 0x100bb7da
jl 0x10019ec0
mov ecx, dword [esp + 0x50]
mov dl, byte [esp + 0x19]
jmp 0x10019ef6
lea eax, [esi + esi*2]
mov dl, byte [eax*2 + 0x100bb753]
lea ecx, [eax*2 + 0x100bb750]
mov dword [esp + 0x50], ecx
mov byte [esp + 0x19], dl
movzx eax, dl
cmp eax, 0x10
ja case.default.0x10019f02
jmp dword [eax*4 + 0x1001b0a4]
mov al, 1
mov byte [esp + 0x2f], al
mov byte [esp + 0x23], 0
test byte [ecx + 2], 1
je 0x10019f9d
cmp byte [esp + 0x1a], 0
je 0x10019f30
mov ecx, dword [esp + 0x60]
call fcn.10019a40
jmp 0x10019f58
mov al, byte [esp + 0x2f]
mov ecx, dword [esp + 0x28]
test al, al
je 0x10019f4e
cmp al, 2
jne 0x10019f4e
mov eax, dword [ecx]
add ecx, 8
mov dword [esp + 0x28], ecx
mov ecx, dword [ecx - 4]
jmp 0x10019f5a
mov eax, dword [ecx]
add ecx, 4
cdq
mov dword [esp + 0x28], ecx
mov ecx, edx
test ecx, ecx
jg 0x10019f8f
jl 0x10019f64
test eax, eax
jae 0x10019f8f
test eax, eax
jne 0x10019f7c
cmp ecx, 0x80000000
jne 0x10019f7c
mov dword [esp + 0x58], ecx
mov cl, 0x2d
mov dword [esp + 0x30], eax
jmp 0x10019ff0
neg eax
mov dword [esp + 0x30], eax
adc ecx, 0
neg ecx
mov dword [esp + 0x58], ecx
mov cl, 0x2d
jmp 0x10019ff0
mov dword [esp + 0x58], ecx
mov cl, byte [esp + 0x1b]
mov dword [esp + 0x30], eax
jmp 0x10019ff4
cmp byte [esp + 0x1a], 0
je 0x10019fb3
mov ecx, dword [esp + 0x60]
call fcn.10019a40
mov dword [esp + 0x58], edx
jmp 0x10019fea
mov al, byte [esp + 0x2f]
mov ecx, dword [esp + 0x28]
test al, al
je 0x10019fd9
cmp al, 2
jne 0x10019fd9
mov eax, dword [ecx]
add ecx, 8
mov dword [esp + 0x30], eax
mov dword [esp + 0x28], ecx
mov eax, dword [ecx - 4]
mov dword [esp + 0x58], eax
jmp 0x10019fee
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x58], 0
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], eax
xor cl, cl
mov byte [esp + 0x1b], cl
mov edx, dword [esp + 0x30]
mov eax, edx
or eax, dword [esp + 0x58]
jne 0x1001a004
mov byte [esp + 0x22], al
cmp byte [esp + 0x37], 0
je 0x1001a021
xor eax, eax
test cl, cl
mov ecx, dword [esp + 0x24]
setne al
sub ecx, eax
cmp edi, ecx
cmovl edi, ecx
mov dword [esp + 0x3c], edi
cmp edi, 0x25
jge 0x1001a039
mov esi, 0x46
lea eax, [esp + 0x78]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x38], eax
jmp 0x1001a08c
mov eax, edi
cdq
mov esi, eax
mov ecx, edx
add esi, 0xa
mov dword [esp + 0x4c], esi
adc ecx, 0
cmp byte [esp + 0x23], 0
je 0x1001a068
mov eax, 0x55555556
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
add esi, eax
mov dword [esp + 0x4c], esi
adc ecx, edx
push ecx
mov ecx, dword [esp + 0x18]
push esi
call fcn.10019b10
mov ecx, eax
mov dword [esp + 0x40], eax
add esp, 8
mov dword [esp + 0x64], ecx
test ecx, ecx
je case.default.0x10019f02
mov edx, dword [esp + 0x30]
dec esi
add esi, eax
cmp byte [esp + 0x19], 0xf
mov dword [esp + 0x1c], esi
jne 0x1001a0f9
push 0
push 0xa
push dword [esp + 0x60]
push edx
call fcn.100b11a0
mov dword [esp + 0x68], eax
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x30]
add ecx, ecx
sub eax, ecx
mov dword [esp + 0x1c], eax
cmp eax, 4
jge 0x1001a0d7
push 0
push 0xa
push edx
push dword [esp + 0x74]
call fcn.100b12b0
cmp eax, 1
jne 0x1001a0db
test edx, edx
jne 0x1001a0db
xor ecx, ecx
jmp 0x1001a0df
mov ecx, dword [esp + 0x1c]
mov al, byte [ecx*2 + 0x100bd171]
mov byte [esi - 1], al
sub esi, 2
mov al, byte [ecx*2 + str.thstndrd]
mov dword [esp + 0x1c], esi
mov byte [esi], al
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x30]
movzx eax, byte [ecx + 4]
add eax, 0x100bf6d0
mov dword [esp + 0x40], eax
movzx eax, byte [ecx + 1]
cdq
mov ecx, eax
mov eax, edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x68], ecx
mov dword [esp + 0x74], eax
push eax
push ecx
push edx
push esi
dec edi
call fcn.100b1210
mov dword [esp + 0x5c], ebx
mov esi, eax
mov eax, dword [esp + 0x40]
mov al, byte [ecx + eax]
mov ecx, dword [esp + 0x68]
mov byte [edi], al
mov eax, dword [esp + 0x74]
test edx, edx
ja 0x1001a127
jb 0x1001a152
test esi, esi
jne 0x1001a127
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x4c]
sub eax, edi
dec eax
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x3c]
add eax, esi
mov edx, dword [esp + 0x1c]
cmp edi, eax
jle 0x1001a17e
sub edi, eax
add eax, edi
dec edx
mov byte [edx], 0x30
dec edi
jne 0x1001a173
mov dword [esp + 0x1c], edx
cmp byte [esp + 0x23], 0
je 0x1001a1c6
dec eax
mov ecx, 3
cdq
idiv ecx
xor ecx, ecx
mov esi, eax
lea edi, [edx + 1]
mov edx, dword [esp + 0x1c]
sub edx, esi
mov dword [esp + 0x1c], edx
test esi, esi
jle 0x1001a1c2
lea eax, [esi + ecx]
mov al, byte [eax + edx]
mov byte [ecx + edx], al
dec edi
jne 0x1001a1bd
mov al, byte [esp + 0x23]
inc ecx
dec esi
mov edi, 3
mov byte [ecx + edx], al
inc ecx
test esi, esi
jg 0x1001a1a3
mov esi, dword [esp + 0x4c]
mov al, byte [esp + 0x1b]
test al, al
je 0x1001a1d5
dec edx
mov dword [esp + 0x1c], edx
mov byte [edx], al
cmp byte [esp + 0x22], 0
je 0x1001a205
mov eax, dword [esp + 0x50]
mov al, byte [eax + 5]
test al, al
je 0x1001a205
movzx eax, al
add eax, 0x100bf3e4
mov cl, byte [eax]
test cl, cl
je 0x1001a205
dec edx
lea eax, [eax + 1]
mov byte [edx], cl
mov cl, byte [eax]
test cl, cl
jne 0x1001a1f5
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x38]
sub eax, edx
dec eax
add esi, eax
mov edi, dword [esp + 0x24]
jmp 0x1001ada6
cmp byte [esp + 0x1a], 0
je 0x1001a293
mov esi, dword [esp + 0x60]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jle 0x1001a284
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
movzx eax, word [ecx + 8]
test al, 8
je 0x1001a24d
movsd xmm1, qword [ecx]
mov dl, byte [esp + 0x19]
movsd qword [esp + 0x40], xmm1
jmp 0x1001a2a9
test al, 0x24
je 0x1001a26b
mov edx, dword [ecx + 4]
mov ecx, dword [ecx]
call fcn.100b16ef
mov dl, byte [esp + 0x19]
movapd xmm1, xmm0
movsd qword [esp + 0x40], xmm1
jmp 0x1001a2a9
test al, 0x12
je 0x1001a284
call fcn.10038af0
mov dl, byte [esp + 0x19]
movapd xmm1, xmm0
movsd qword [esp + 0x40], xmm0
jmp 0x1001a2a9
mov dl, byte [esp + 0x19]
xorps xmm1, xmm1
movsd qword [esp + 0x40], xmm1
jmp 0x1001a2a9
mov ecx, dword [esp + 0x28]
add ecx, 8
mov dword [esp + 0x28], ecx
movsd xmm1, qword [ecx - 8]
movsd qword [esp + 0x40], xmm1
test edi, edi
mov eax, 6
xorps xmm2, xmm2
cmovs edi, eax
comisd xmm2, xmm1
mov dword [esp + 0x3c], edi
jbe 0x1001a2d3
xorpd xmm1, xmmword [0x100bfab0]
movsd qword [esp + 0x40], xmm1
mov byte [esp + 0x1b], 0x2d
cmp dl, 3
jne 0x1001a2e1
test edi, edi
jle 0x1001a2e1
dec edi
mov dword [esp + 0x3c], edi
mov esi, edi
mov eax, 0x66666667
and esi, 0xfff
imul esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*4]
mov eax, esi
add ecx, ecx
sub eax, ecx
movsd xmm3, qword [eax*8 + 0x100bf3f0]
cmp esi, 0xa
jl 0x1001a32a
movsd xmm0, qword [0x100bf910]
mov eax, 0xcccccccd
mul esi
shr edx, 3
mulsd xmm3, xmm0
dec edx
jne 0x1001a323
cmp byte [esp + 0x19], 1
jne 0x1001a385
movsd qword [esp + 0x40], xmm1
mov eax, 0x55555556
mov ecx, dword [esp + 0x44]
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 0x1001a373
movapd xmm0, xmm1
mulsd xmm0, qword [0x100bf908]
addsd xmm0, xmm3
movapd xmm3, xmm0
movapd xmm0, xmm3
addsd xmm0, xmm1
movapd xmm1, xmm0
movsd qword [esp + 0x40], xmm1
movsd qword [esp + 0x68], xmm1
xor eax, eax
mov ecx, dword [esp + 0x6c]
mov edx, ecx
and edx, 0x7ff00000
mov dword [esp + 0x30], eax
xor esi, esi
jne 0x1001a3d2
cmp edx, 0x7ff00000
jne 0x1001a3d2
mov eax, dword [esp + 0x68]
and ecx, 0xfffff
or eax, ecx
je 0x1001a3ce
mov edi, dword [esp + 0x24]
mov edx, 0x100c72b4
mov dword [esp + 0x1c], edx
mov esi, 3
jmp 0x1001ada6
mov eax, dword [esp + 0x30]
comisd xmm1, xmm2
jbe 0x1001a508
movsd xmm4, qword [0x100bf9f8]
comisd xmm1, xmm4
movsd xmm5, qword [0x100bf930]
movapd xmm2, xmm5
jb 0x1001a416
cmp eax, 0x15e
jg 0x1001a412
mulsd xmm2, xmm4
add eax, 0x64
movapd xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x1001a3f6
mov dword [esp + 0x30], eax
movsd xmm4, qword [0x100bf9c8]
movapd xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jb 0x1001a44c
lea esp, [esp]
cmp eax, 0x15e
jg 0x1001a448
movapd xmm2, xmm0
add eax, 0xa
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x1001a430
mov dword [esp + 0x30], eax
movsd xmm4, qword [0x100bf940]
movapd xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jb 0x1001a47c
cmp eax, 0x15e
jg 0x1001a478
movapd xmm2, xmm0
inc eax
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x1001a462
mov dword [esp + 0x30], eax
divsd xmm1, xmm2
movsd xmm0, qword [0x100bf918]
comisd xmm0, xmm1
movsd qword [esp + 0x40], xmm1
jbe 0x1001a4b7
movsd xmm2, qword [0x100bf9a8]
lea esp, [esp]
mulsd xmm1, xmm2
sub eax, 8
comisd xmm0, xmm1
ja 0x1001a4a0
mov dword [esp + 0x30], eax
movsd qword [esp + 0x40], xmm1
comisd xmm5, xmm1
jbe 0x1001a4d5
lea ecx, [ecx]
mulsd xmm1, xmm4
dec eax
comisd xmm5, xmm1
ja 0x1001a4c0
mov dword [esp + 0x30], eax
movsd qword [esp + 0x40], xmm1
cmp eax, 0x15e
jle 0x1001a510
mov al, byte [esp + 0x1b]
lea edx, [esp + 0x78]
mov edi, dword [esp + 0x24]
xor ecx, ecx
test al, al
mov byte [esp + 0x78], al
mov eax, dword [0x100c72b8]
setne cl
mov dword [esp + 0x1c], edx
mov dword [esp + ecx + 0x78], eax
lea esi, [ecx + 3]
jmp 0x1001ada6
movsd xmm4, qword [0x100bf940]
mov dl, byte [esp + 0x19]
lea esi, [esp + 0x78]
cmp dl, 1
je 0x1001a540
addsd xmm1, xmm3
comisd xmm1, xmm4
movsd qword [esp + 0x40], xmm1
jb 0x1001a540
mulsd xmm1, qword [0x100bf920]
inc eax
mov dword [esp + 0x30], eax
movsd qword [esp + 0x40], xmm1
cmp dl, 3
jne 0x1001a623
cmp byte [esp + 0x22], 0
sete byte [esp + 0x23]
cmp eax, 0xfffffffc
jl 0x1001a613
cmp eax, edi
jg 0x1001a613
sub edi, eax
mov byte [esp + 0x19], 1
mov dword [esp + 0x3c], edi
mov ecx, eax
mov dword [esp + 0x4c], eax
xor eax, eax
test ecx, ecx
cmovg eax, ecx
cdq
mov ecx, eax
mov dword [esp + 0x38], edx
mov eax, edi
cdq
add ecx, eax
mov eax, dword [esp + 0x24]
adc dword [esp + 0x38], edx
cdq
add ecx, eax
mov eax, dword [esp + 0x38]
adc eax, edx
add ecx, 0xf
adc eax, 0
js 0x1001a5c4
jg 0x1001a5a8
cmp ecx, 0x46
jbe 0x1001a5c4
push eax
push ecx
mov ecx, dword [esp + 0x1c]
call fcn.10019b10
add esp, 8
mov dword [esp + 0x64], eax
mov esi, eax
test eax, eax
je case.default.0x10019f02
movzx eax, byte [esp + 0x2e]
test edi, edi
mov dl, byte [esp + 0x1b]
mov dword [esp + 0x1c], esi
lea eax, [eax + eax*4]
lea ecx, [eax*2 + 0x10]
setg al
or al, byte [esp + 0x2e]
or al, byte [esp + 0x22]
mov dword [esp + 0x68], ecx
mov byte [esp + 0x22], al
test dl, dl
je 0x1001a5f7
mov byte [esi], dl
inc esi
mov edx, dword [esp + 0x4c]
movsd xmm1, qword [esp + 0x40]
movsd xmm2, qword [0x100bf940]
test edx, edx
jns 0x1001a640
mov byte [esi], 0x30
inc esi
jmp 0x1001a66d
xor ecx, ecx
mov byte [esp + 0x19], 2
mov dword [esp + 0x4c], ecx
jmp 0x1001a575
mov cl, byte [esp + 0x2e]
mov byte [esp + 0x23], cl
cmp dl, 2
jne 0x1001a56f
xor ecx, ecx
mov dword [esp + 0x4c], ecx
jmp 0x1001a575
test ecx, ecx
jg 0x1001a648
mov al, 0x30
jmp 0x1001a65f
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
dec edx
jns 0x1001a640
mov al, byte [esp + 0x22]
mov dword [esp + 0x68], ecx
test al, al
je 0x1001a675
mov byte [esi], 0x2e
inc esi
inc edx
jns 0x1001a69f
neg edx
mov edi, esi
mov ecx, edx
mov dword [esp + 0x4c], edx
shr ecx, 2
mov eax, 0x30303030
rep stosd dword es:[edi], eax
mov ecx, edx
add esi, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x68]
sub edi, edx
test edi, edi
jle 0x1001a6ca
dec edi
test ecx, ecx
jg 0x1001a6ac
mov al, 0x30
jmp 0x1001a6c3
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
test edi, edi
jg 0x1001a6a3
cmp byte [esp + 0x23], 0
je 0x1001a705
cmp byte [esp + 0x22], 0
je 0x1001a705
cmp byte [esi - 1], 0x30
lea eax, [esi - 1]
jne 0x1001a6ee
mov esi, eax
lea eax, [esi - 1]
mov byte [esi], 0
cmp byte [eax], 0x30
je 0x1001a6e1
cmp byte [esi - 1], 0x2e
jne 0x1001a705
cmp byte [esp + 0x2e], 0
je 0x1001a701
mov byte [esi], 0x30
inc esi
jmp 0x1001a705
dec esi
mov byte [esi], 0
cmp byte [esp + 0x19], 2
jne 0x1001a797
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x30]
movzx eax, byte [eax + 4]
mov al, byte [eax + 0x100bf6d0]
mov byte [esi], al
test ecx, ecx
jns 0x1001a737
mov byte [esi + 1], 0x2d
add esi, 2
neg ecx
mov dword [esp + 0x30], ecx
jmp 0x1001a73e
mov byte [esi + 1], 0x2b
add esi, 2
cmp ecx, 0x64
jl 0x1001a768
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 + 0x30]
add ecx, eax
mov dword [esp + 0x30], ecx
mov eax, 0x66666667
imul ecx
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 + 0x30]
add al, al
sub cl, al
add cl, 0x30
mov byte [esi + 1], cl
add esi, 2
mov edx, dword [esp + 0x1c]
mov cl, byte [esp + 0x13]
mov edi, dword [esp + 0x24]
mov byte [esi], 0
sub esi, edx
cmp byte [esp + 0x37], 0
je 0x1001adaa
test cl, cl
jne 0x1001adaa
cmp esi, edi
jge 0x1001adaa
mov ecx, dword [esp + 0x24]
sub edi, esi
mov dword [esp + 0x40], edi
cmp ecx, edi
jl 0x1001a7e0
mov esi, edx
sub esi, edi
mov al, byte [ecx + esi]
mov byte [ecx + edx], al
dec ecx
cmp ecx, edi
jge 0x1001a7d5
xor eax, eax
cmp byte [esp + 0x1b], al
setne al
test edi, edi
je 0x1001a80b
mov ecx, dword [esp + 0x40]
lea edi, [eax + edx]
mov edx, ecx
mov eax, 0x30303030
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
mov edx, dword [esp + 0x1c]
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x24]
mov esi, edi
jmp 0x1001ada6
cmp byte [esp + 0x1a], 0
jne 0x1001ad9e
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
add ecx, 4
mov dword [esp + 0x28], ecx
mov ecx, dword [ecx - 4]
mov eax, dword [eax + 0x10]
mov dword [ecx], eax
jmp 0x1001ad9e
mov edi, dword [esp + 0x24]
lea edx, [esp + 0x78]
mov byte [esp + 0x78], 0x25
mov esi, 1
mov dword [esp + 0x1c], edx
jmp 0x1001ada6
cmp byte [esp + 0x1a], 0
je 0x1001a8b8
mov ecx, dword [esp + 0x60]
call fcn.10019ac0
mov edx, eax
mov esi, 1
test edx, edx
je 0x1001a8ae
movsx ecx, byte [edx]
inc edx
mov byte [esp + 0x78], cl
and ecx, 0xc0
cmp cl, 0xc0
jne 0x1001a967
lea ebx, [ebx]
mov cl, byte [edx]
mov al, cl
and al, 0xc0
cmp al, 0x80
jne 0x1001a967
mov byte [esp + esi + 0x78], cl
inc edx
inc esi
cmp esi, 4
jl 0x1001a890
jmp 0x1001a967
mov byte [esp + 0x78], 0
jmp 0x1001a967
mov ecx, dword [esp + 0x28]
add ecx, 4
mov dword [esp + 0x28], ecx
mov ecx, dword [ecx - 4]
cmp ecx, 0x80
jae 0x1001a8dc
mov byte [esp + 0x78], cl
mov esi, 1
jmp 0x1001a967
mov eax, ecx
cmp ecx, 0x800
jae 0x1001a902
shr eax, 6
and cl, 0x3f
and al, 0x1f
mov esi, 2
sub al, 0x40
add cl, 0x80
mov byte [esp + 0x78], al
mov byte [esp + 0x79], cl
jmp 0x1001a967
cmp ecx, 0x10000
jae 0x1001a933
shr eax, 0xc
mov esi, 3
and al, 0xf
sub al, 0x20
mov byte [esp + 0x78], al
mov eax, ecx
shr eax, 6
and cl, 0x3f
and al, 0x3f
add al, 0x80
add cl, 0x80
mov byte [esp + 0x79], al
mov byte [esp + 0x7a], cl
jmp 0x1001a967
shr eax, 0x12
mov esi, 4
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 cl, 0x3f
and al, 0x3f
add al, 0x80
add cl, 0x80
mov byte [esp + 0x7a], al
mov byte [esp + 0x7b], cl
cmp edi, 1
jle 0x1001a9f3
mov ecx, dword [esp + 0x24]
mov eax, 1
sub eax, edi
add ecx, eax
mov dword [esp + 0x24], ecx
cmp ecx, 1
jle 0x1001a9a8
cmp byte [esp + 0x13], 0
jne 0x1001a9a8
lea eax, [ecx - 1]
push 0x20
push eax
mov eax, dword [esp + 0x1c]
push eax
call fcn.1001b250
add esp, 0xc
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x14]
dec edi
lea ecx, [ecx]
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x14]
add ecx, esi
cmp ecx, dword [eax + 8]
jb 0x1001a9cf
push esi
lea edx, [esp + 0x7c]
mov ecx, eax
call fcn.1001b2a0
add esp, 4
jmp 0x1001a9ec
test esi, esi
je 0x1001a9f0
mov dword [eax + 0x10], ecx
lea edx, [esp + 0x78]
mov eax, dword [eax + 4]
push esi
sub eax, esi
push edx
add eax, ecx
push eax
call sub.MSVCR120.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x14]
dec edi
jne 0x1001a9b0
lea edx, [esp + 0x78]
mov dword [esp + 0x1c], edx
jmp 0x1001acca
cmp byte [esp + 0x1a], 0
je 0x1001aa1a
mov ecx, dword [esp + 0x60]
call fcn.10019ac0
mov edx, eax
mov dword [esp + 0x1c], eax
mov al, 5
jmp 0x1001aa30
mov ecx, dword [esp + 0x28]
mov al, byte [esp + 0x19]
add ecx, 4
mov dword [esp + 0x28], ecx
mov edx, dword [ecx - 4]
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1001aa3f
mov edx, 0x100cffbd
mov dword [esp + 0x1c], edx
jmp 0x1001aaaf
cmp al, 6
jne 0x1001aaaf
mov esi, dword [esp + 0x14]
cmp dword [esi + 0x10], 0
jne 0x1001aaa9
cmp dword [esi + 0xc], 0
je 0x1001aaa9
cmp dword [esp + 0x24], 0
jne 0x1001aaa9
test edi, edi
jns 0x1001aaa9
cmp byte [esi + 0x14], 0
jne 0x1001aaa9
mov ecx, dword [esi]
mov dword [esi + 4], edx
call fcn.100190c0
mov edx, dword [esp + 0x1c]
mov ecx, edx
mov dword [esi + 8], eax
lea esi, [ecx + 1]
lea ebx, [ebx]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001aa80
mov eax, dword [esp + 0x14]
sub ecx, esi
mov edi, dword [esp + 0x24]
and ecx, 0x7fffffff
or byte [eax + 0x15], 4
xor esi, esi
mov dword [eax + 0x10], ecx
mov cl, byte [esp + 0x13]
jmp 0x1001adae
mov eax, edx
mov dword [esp + 0x64], eax
test edi, edi
js 0x1001ab0b
cmp byte [esp + 0x2e], 0
je 0x1001aae9
mov esi, edx
test edi, edi
jle 0x1001aae2
mov al, byte [esi]
dec edi
test al, al
je 0x1001aae2
inc esi
cmp al, 0xc0
jb 0x1001aade
mov al, byte [esi]
and al, 0xc0
cmp al, 0x80
jne 0x1001aade
mov al, byte [esi + 1]
inc esi
and al, 0xc0
cmp al, 0x80
je 0x1001aad4
test edi, edi
jg 0x1001aac0
sub esi, edx
jmp 0x1001acbf
xor esi, esi
test edi, edi
jle 0x1001a20e
cmp byte [esi + edx], 0
je 0x1001a20e
inc esi
cmp esi, edi
jl 0x1001aaf3
mov edi, dword [esp + 0x24]
jmp 0x1001ada6
mov esi, edx
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x1001ab10
sub esi, ecx
and esi, 0x7fffffff
jmp 0x1001acbf
cmp dl, 0xe
mov eax, 0x27
mov ecx, 0x22
cmove eax, ecx
cmp byte [esp + 0x1a], 0
mov dword [esp + 0x50], eax
je 0x1001ab97
mov esi, dword [esp + 0x60]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jg 0x1001ab4e
xor edx, edx
jmp 0x1001aba5
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
test ecx, ecx
jne 0x1001ab62
xor edx, edx
jmp 0x1001aba5
movzx edx, word [ecx + 8]
mov eax, edx
and eax, 0x202
cmp eax, 0x202
jne 0x1001ab7f
cmp byte [ecx + 0xa], 1
jne 0x1001ab7f
mov edx, dword [ecx + 0x10]
jmp 0x1001aba5
test dl, 1
je 0x1001ab88
xor edx, edx
jmp 0x1001aba5
mov dl, 1
call fcn.10039590
mov edx, eax
mov dword [esp + 0x58], eax
jmp 0x1001aba9
mov ecx, dword [esp + 0x28]
add ecx, 4
mov dword [esp + 0x28], ecx
mov edx, dword [ecx - 4]
mov dword [esp + 0x58], edx
xor eax, eax
test edx, edx
sete al
mov dword [esp + 0x40], eax
test eax, eax
je 0x1001abce
cmp byte [esp + 0x19], 0xa
mov edx, 0x100c72bc
mov ecx, str._NULL_
cmovne edx, ecx
mov dword [esp + 0x58], edx
mov ecx, dword [esp + 0x3c]
xor esi, esi
xor edi, edi
test ecx, ecx
je 0x1001ac15
mov ah, byte [esp + 0x2e]
mov edi, edi
mov al, byte [edi + edx]
test al, al
je 0x1001ac11
cmp al, byte [esp + 0x50]
jne 0x1001abee
inc esi
test ah, ah
je 0x1001ac0d
and al, 0xc0
cmp al, 0xc0
jne 0x1001ac0d
mov al, byte [edi + edx + 1]
and al, 0xc0
cmp al, 0x80
jne 0x1001ac0d
mov al, byte [edi + edx + 2]
inc edi
and al, 0xc0
cmp al, 0x80
je 0x1001ac02
inc edi
dec ecx
jne 0x1001abe0
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x1001ac28
cmp byte [esp + 0x19], 0xa
mov dword [esp + 0x38], 1
je 0x1001ac30
mov dword [esp + 0x38], 0
lea eax, [edi + 3]
add eax, esi
cmp eax, 0x46
jle 0x1001ac5d
mov ecx, dword [esp + 0x14]
cdq
push edx
push eax
call fcn.10019b10
mov ecx, eax
add esp, 8
mov dword [esp + 0x64], ecx
mov dword [esp + 0x1c], ecx
test ecx, ecx
je case.default.0x10019f02
jmp 0x1001ac65
lea eax, [esp + 0x78]
mov dword [esp + 0x1c], eax
xor esi, esi
cmp dword [esp + 0x38], esi
je 0x1001ac78
mov ecx, dword [esp + 0x50]
mov esi, 1
mov byte [eax], cl
xor edx, edx
test edi, edi
jle 0x1001aca8
mov eax, dword [esp + 0x58]
mov cl, byte [edx + eax]
mov eax, dword [esp + 0x1c]
mov byte [esi + eax], cl
inc esi
mov eax, dword [esp + 0x58]
cmp cl, byte [esp + 0x50]
jne 0x1001aca3
mov eax, dword [esp + 0x1c]
mov byte [esi + eax], cl
inc esi
mov eax, dword [esp + 0x58]
inc edx
cmp edx, edi
jl 0x1001ac82
cmp dword [esp + 0x38], 0
mov edx, dword [esp + 0x1c]
je 0x1001acbb
mov eax, dword [esp + 0x50]
mov byte [esi + edx], al
inc esi
mov byte [esi + edx], 0
cmp byte [esp + 0x2e], 0
je 0x1001a20e
mov edi, dword [esp + 0x24]
test edi, edi
jle 0x1001ada6
lea ecx, [esi - 1]
test ecx, ecx
js 0x1001ada6
mov al, byte [ecx + edx]
dec ecx
and al, 0xc0
cmp al, 0x80
jne 0x1001acec
inc edi
test ecx, ecx
jns 0x1001ace1
jmp 0x1001ada6
mov edx, dword [esp + 0x14]
test byte [edx + 0x15], 1
je case.default.0x10019f02
mov ecx, dword [esp + 0x28]
add ecx, 4
mov dword [esp + 0x28], ecx
mov eax, dword [ecx - 4]
test eax, eax
je 0x1001ad9e
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x1001ad9e
push ecx
push dword [eax]
push edx
call fcn.1001b2e0
add esp, 0xc
jmp 0x1001ad9e
mov ecx, dword [esp + 0x14]
test byte [ecx + 0x15], 1
je case.default.0x10019f02
mov eax, dword [esp + 0x28]
mov esi, dword [eax]
add eax, 8
mov dword [esp + 0x28], eax
mov eax, dword [eax - 4]
lea edi, [eax + eax*8]
mov eax, dword [esi + edi*8 + 0xc]
test eax, eax
je 0x1001ad8e
push eax
push ecx
call fcn.1001b330
mov ecx, dword [esp + 0x1c]
add esp, 8
mov edx, dword [ecx + 0x10]
inc edx
cmp edx, dword [ecx + 8]
jb 0x1001ad7f
push 1
mov edx, 0x100c72cc
call fcn.1001b2a0
add esp, 4
jmp 0x1001ad8e
mov dword [ecx + 0x10], edx
mov ecx, dword [ecx + 4]
mov al, byte [0x100c72cc]
mov byte [ecx + edx - 1], al
push dword [esi + edi*8 + 0x10]
push dword [esp + 0x18]
call fcn.1001b330
add esp, 8
mov edx, dword [esp + 0x1c]
xor edi, edi
xor esi, esi
mov cl, byte [esp + 0x13]
mov eax, dword [esp + 0x14]
sub edi, esi
mov dword [esp + 0x24], edi
test edi, edi
jle 0x1001aea4
test cl, cl
jne 0x1001ae18
mov eax, dword [eax + 0x10]
xor ecx, ecx
mov dword [esp + 0x38], eax
mov eax, edi
cdq
add dword [esp + 0x38], eax
adc ecx, edx
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 8]
js 0x1001ae00
jg 0x1001ade3
cmp dword [esp + 0x38], eax
jb 0x1001ae00
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
call fcn.1001b0f0
mov edx, dword [esp + 0x14]
mov edi, eax
test edi, edi
jle 0x1001ae12
lea ebx, [ebx]
mov eax, dword [edx + 0x10]
dec edi
mov ecx, dword [edx + 4]
mov byte [ecx + eax], 0x20
inc dword [edx + 0x10]
test edi, edi
jg 0x1001ae00
mov edi, dword [esp + 0x24]
jmp 0x1001ae1c
mov edx, dword [esp + 0x14]
mov ecx, dword [edx + 0x10]
add ecx, esi
cmp ecx, dword [edx + 8]
jb 0x1001ae39
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
push esi
call fcn.1001b2a0
add esp, 4
jmp 0x1001ae55
test esi, esi
je 0x1001ae59
mov eax, dword [edx + 4]
push esi
push dword [esp + 0x20]
sub eax, esi
mov dword [edx + 0x10], ecx
add eax, ecx
push eax
call sub.MSVCR120.dll_memcpy
add esp, 0xc
mov edx, dword [esp + 0x14]
cmp byte [esp + 0x13], 0
je 0x1001aebd
mov esi, dword [edx + 0x10]
mov eax, edi
cdq
xor ecx, ecx
add esi, eax
adc ecx, edx
js 0x1001ae8a
jg 0x1001ae79
mov edx, dword [esp + 0x14]
cmp esi, dword [edx + 8]
jb 0x1001ae90
mov ecx, dword [esp + 0x14]
mov edx, edi
call fcn.1001b0f0
mov edi, eax
test edi, edi
jle 0x1001aebd
mov edx, dword [esp + 0x14]
mov edi, edi
mov eax, dword [edx + 0x10]
dec edi
mov ecx, dword [edx + 4]
mov byte [ecx + eax], 0x20
inc dword [edx + 0x10]
test edi, edi
jg 0x1001ae90
jmp 0x1001aee4
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x14]
add ecx, esi
cmp ecx, dword [eax + 8]
jb 0x1001aec3
push esi
mov ecx, eax
call fcn.1001b2a0
add esp, 4
mov edx, dword [esp + 0x14]
jmp 0x1001aee4
test esi, esi
je 0x1001aee2
mov dword [eax + 0x10], ecx
mov eax, dword [eax + 4]
push esi
sub eax, esi
push edx
add eax, ecx
push eax
call sub.MSVCR120.dll_memcpy
mov edx, dword [esp + 0x20]
add esp, 0xc
jmp 0x1001aee4
mov edx, eax
mov edi, dword [esp + 0x64]
test edi, edi
je 0x1001afa5
mov ecx, dword [edx]
test ecx, ecx
je 0x1001af43
cmp dword [ecx + 0x1f8], 0
je 0x1001af0b
mov edx, edi
call fcn.10019190
jmp 0x1001af9b
cmp edi, dword [ecx + 0x14c]
jae 0x1001af43
cmp edi, dword [ecx + 0x144]
jb 0x1001af2b
mov eax, dword [ecx + 0x140]
mov dword [edi], eax
mov dword [ecx + 0x140], edi
jmp 0x1001af9f
cmp edi, dword [ecx + 0x148]
jb 0x1001af43
mov eax, dword [ecx + 0x138]
mov dword [edi], eax
mov dword [ecx + 0x138], edi
jmp 0x1001af9f
cmp dword [0x100cecc8], 0
je 0x1001af91
mov eax, dword [0x100d0018]
test eax, eax
je 0x1001af5f
push eax
call dword [0x100ced18]
add esp, 4
push edi
call dword [0x100cecf4]
sub dword [0x100d0050], eax
add esp, 4
dec dword [0x100d0074]
push edi
call dword [0x100cecec]
mov eax, dword [0x100d0018]
add esp, 4
test eax, eax
je 0x1001af9b
push eax
call dword [0x100ced20]
jmp 0x1001af98
push edi
call dword [0x100cecec]
add esp, 4
mov edx, dword [esp + 0x14]
xor eax, eax
mov dword [esp + 0x64], eax
mov esi, dword [esp + 0x54]
inc esi
movsx eax, byte [esi]
test eax, eax
jne 0x10019c25
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb8]
xor ecx, esp
call fcn.100b010b
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x14]
mov edx, dword [edx + 0x10]
inc edx
cmp edx, dword [eax + 8]
jb 0x1001affd
push 1
mov edx, 0x100c72b0
mov ecx, eax
call fcn.1001b2a0
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb8]
xor ecx, esp
call fcn.100b010b
mov esp, ebp
pop ebp
ret
mov ecx, dword [eax + 4]
mov dword [eax + 0x10], edx
mov al, byte [0x100c72b0]
mov byte [ecx + edx - 1], al
mov ecx, dword [esp + 0xc4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.100b010b
mov esp, ebp
pop ebp
ret