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

Disassembly:
sub esp, 0x80
mov eax, dword [esp + 0xac]
push ebx
push ebp
push esi
mov esi, dword [ecx + 8]
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x90]
mov dword [esp + 0x68], ecx
mov ecx, dword [edx + 8]
mov dword [esp + 0x6c], ecx
mov ecx, dword [eax + 0x14]
mov edx, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x60], ecx
mov ecx, dword [eax + 4]
mov dword [esp + 0x14], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x10], ecx
mov cl, byte [eax + 0xc]
mov byte [esp + 0xf], cl
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x30], ecx
mov ecx, dword [eax + 0x18]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0xa0]
add ecx, 3
xor ebp, ebp
sar ecx, 2
cmp dword [esp + 0xbc], ebp
push edi
mov dword [esp + 0x40], esi
mov dword [esp + 0x38], edx
mov dword [esp + 0x8c], edx
mov dword [esp + 0x2c], ebp
jbe 0x1001a781
fld dword [esp + 0x9c]
fld dword [esp + 0x98]
jmp 0x10019642
mov esi, dword [esp + 0x40]
mov ecx, dword [esp + 0x88]
cmp ecx, 8
jl 0x1001964e
mov eax, 8
jmp 0x1001965c
mov eax, ecx
and eax, 0x80000007
jns 0x1001965c
dec eax
or eax, 0xfffffff8
inc eax
sub ecx, eax
test eax, eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x88], ecx
je 0x1001a7bc
cmp eax, 1
jbe 0x10019680
mov dword [esp + 0x3c], 4
jmp 0x10019692
mov eax, dword [esp + 0xa4]
mov edx, ebp
shl edx, 5
sub eax, edx
mov dword [esp + 0x3c], eax
cmp dword [esp + 0xa0], 0
mov eax, dword [esi + ebp*4]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x28], eax
lea edx, [ecx + ebp]
lea eax, [esi + edx*4]
mov dword [esp + 0x80], eax
mov eax, dword [eax]
mov dword [esp + 0x48], eax
mov dword [esp + 0x24], 0
jbe 0x10019c13
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x40]
add eax, 2
imul eax, dword [esp + 0xc0]
add eax, ebp
add eax, eax
add eax, eax
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x50], eax
mov eax, dword [eax + edx]
mov dword [esp + 0x28], ecx
shr ecx, 0x1c
mov dword [esp + 0x48], eax
xor eax, eax
cmp dword [esp + 0x3c], eax
lea ecx, [ecx*4 + 0x1009bb48]
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x60], ecx
jbe 0x10019be4
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x30]
cmp byte [edx + eax], 0
jne 0x10019bca
test ebp, ebp
mov esi, dword [esp + 0x20]
mov eax, dword [esi*4 + 0x1009ba30]
je 0x100197ba
cmp dword [esp + 0x30], 0
jne 0x100197ba
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0xc0]
mov eax, dword [esp + 0x40]
mov edx, ecx
imul edx, esi
add ecx, 1
imul ecx, esi
add edx, ebp
mov edx, dword [eax + edx*4 - 4]
and edx, 1
add edx, edx
add ecx, ebp
mov ecx, dword [eax + ecx*4 - 4]
add edx, edx
and ecx, 1
add edx, edx
or edx, ecx
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx + eax - 4]
mov ecx, dword [esp + 0x28]
add edx, edx
add edx, edx
and eax, 1
add edx, edx
or edx, eax
mov eax, dword [esp + 0x48]
and ecx, 0xc7ffffff
shr eax, 3
or ecx, eax
mov eax, dword [esp + 0x54]
shr ecx, 3
and eax, 0xc0ffffff
add edx, edx
or ecx, eax
add edx, edx
shr ecx, 0x18
or edx, ecx
jmp 0x100197ee
mov ecx, dword [esi*4 + 0x1009bab0]
mov edx, eax
and edx, dword [esp + 0x54]
mov edi, eax
and edi, dword [esp + 0x28]
and eax, dword [esp + 0x48]
shr edx, cl
shr edi, cl
shr eax, cl
add edx, edx
add edx, edx
add edx, edx
or edx, edi
add edx, edx
add edx, edx
add edx, edx
or edx, eax
cmp esi, 0x1f
jne 0x100197ee
add edx, edx
test edx, edx
mov ecx, dword [esp + 0xa8]
mov eax, dword [ecx + edx*4]
je 0x10019bca
mov ecx, dword [esp + 0x58]
mov edi, dword [ecx]
mov esi, dword [ecx + 4]
mov ebx, dword [esp + 0x18]
add edi, eax
add esi, eax
movzx eax, byte [edi]
mov eax, dword [eax*4 + 0x1008a1b8]
mov ecx, eax
shr ecx, 0x10
shr ebx, 0x10
cmp ebx, ecx
mov dword [esp + 0x4c], ecx
jb 0x10019884
sub dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x14]
mov ecx, eax
and ecx, 0xffff0000
sub dword [esp + 0x18], ecx
test ebx, 0x8000
je 0x10019852
cmp byte [esi], 0
setne al
jmp 0x1001992b
cmp ebx, dword [esp + 0x4c]
jb 0x10019865
cmp byte [esi], 0
setne byte [esp + 0x12]
shr eax, 8
jmp 0x100198b6
mov cl, byte [esi]
mov bl, cl
xor bl, 1
mov bl, al
setne byte [esp + 0x12]
and bl, 1
xor bl, cl
shr eax, 1
mov byte [esi], bl
mov ebx, dword [esp + 0x14]
and al, 0x7f
jmp 0x100198b6
add ecx, ecx
cmp dword [esp + 0x14], ecx
jae 0x10019899
cmp byte [esi], 0
setne byte [esp + 0x12]
shr eax, 8
jmp 0x100198b2
mov cl, byte [esi]
mov bl, cl
xor bl, 1
setne byte [esp + 0x12]
mov bl, al
and bl, 1
xor bl, cl
shr eax, 1
mov byte [esi], bl
and al, 0x7f
mov ebx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x38]
mov byte [edi], al
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x64]
test eax, eax
jne 0x10019908
cmp esi, edi
je 0x100198fd
mov al, byte [esi]
add esi, 1
cmp byte [esp + 0x13], 0xff
mov byte [esp + 0x13], al
je 0x100198ea
movzx eax, al
shl eax, 8
add ecx, eax
jmp 0x10019903
cmp al, 0x8f
ja 0x100198fd
movzx eax, al
shl eax, 9
add ecx, eax
mov eax, 7
jmp 0x10019908
add ecx, 0xff00
mov eax, 8
add ebx, ebx
add ecx, ecx
sub eax, 1
test ebx, 0x8000
je 0x100198c8
mov dword [esp + 0x34], eax
mov al, byte [esp + 0x12]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x38], esi
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
add ebx, 1
imul ebx, dword [esp + 0xc0]
add ebx, ebp
mov esi, 0x80000000
shr esi, cl
mov ecx, dword [esp + 0x70]
add ebx, ebx
add ebx, ebx
or dword [ebx + ecx], esi
test al, al
mov dword [esp + 0x44], ebx
mov dword [esp + 0x4c], esi
je 0x10019bca
mov eax, dword [esp + 0x24]
imul eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0x6c]
mov edi, dword [esp + 0x50]
mov edi, dword [edi + ecx]
add eax, ebp
test ebp, ebp
mov esi, dword [ecx + eax*4]
mov eax, dword [ebx + ecx]
je 0x100199bc
cmp dword [esp + 0x30], 0
jne 0x100199bc
mov ecx, dword [ebx + ecx - 4]
and eax, 0x40000000
shr edi, 3
or eax, edi
shr eax, 3
and esi, 0x81ffffff
or eax, esi
and ecx, 1
shr eax, 0x19
shl ecx, 4
and edx, 0xaa
or eax, ecx
or eax, edx
mov edx, eax
jmp 0x10019a05
and edx, 0xaa
cmp dword [esp + 0x20], 0x1f
je 0x100199ea
mov ecx, 0x1e
sub ecx, dword [esp + 0x20]
shr esi, cl
shr eax, cl
shr edi, cl
and esi, 2
add esi, esi
add esi, esi
add esi, esi
and eax, 5
or esi, eax
shr edi, 1
jmp 0x100199fa
and esi, 1
add esi, esi
add esi, esi
add esi, esi
and eax, 2
or esi, eax
add esi, esi
add esi, esi
and edi, 1
add esi, esi
or esi, edi
or edx, esi
mov eax, dword [esp + 0xac]
mov eax, dword [eax + edx*4]
mov edx, dword [esp + 0x58]
mov edi, dword [edx]
mov esi, dword [edx + 4]
mov cl, al
shr eax, 1
movzx edx, byte [edi + eax]
add edi, eax
add esi, eax
mov eax, dword [edx*4 + 0x1008a1b8]
mov edx, dword [esp + 0x18]
mov ebp, eax
mov ebx, edx
shr ebp, 0x10
shr ebx, 0x10
and cl, 1
cmp ebx, ebp
jb 0x10019aa1
sub dword [esp + 0x14], ebp
mov ebx, eax
and ebx, 0xffff0000
sub edx, ebx
mov ebx, dword [esp + 0x14]
test ebx, 0x8000
mov dword [esp + 0x18], edx
je 0x10019a6a
mov al, byte [esi]
xor al, cl
setne bl
jmp 0x10019b3f
cmp ebx, ebp
mov bl, byte [esi]
mov ebp, dword [esp + 0x14]
jb 0x10019a7e
xor bl, cl
setne bl
shr eax, 8
jmp 0x10019ad2
mov byte [esp + 0x1f], bl
xor bl, cl
xor bl, 1
setne byte [esp + 0x12]
mov bl, byte [esp + 0x12]
mov cl, al
and cl, 1
xor cl, byte [esp + 0x1f]
shr eax, 1
mov byte [esi], cl
and al, 0x7f
jmp 0x10019ad2
lea edx, [ebp + ebp]
cmp dword [esp + 0x14], edx
mov dl, byte [esi]
jae 0x10019ab7
xor dl, cl
setne bl
shr eax, 8
jmp 0x10019ace
mov bl, dl
xor bl, cl
xor bl, 1
setne bl
mov cl, al
and cl, 1
xor cl, dl
shr eax, 1
mov byte [esi], cl
and al, 0x7f
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x64]
mov ecx, dword [esp + 0x38]
mov byte [edi], al
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x10019b20
cmp ecx, esi
je 0x10019b15
mov al, byte [ecx]
add ecx, 1
cmp byte [esp + 0x13], 0xff
mov byte [esp + 0x13], al
je 0x10019b02
movzx eax, al
shl eax, 8
add edx, eax
jmp 0x10019b1b
cmp al, 0x8f
ja 0x10019b15
movzx eax, al
shl eax, 9
add edx, eax
mov eax, 7
jmp 0x10019b20
add edx, 0xff00
mov eax, 8
add ebp, ebp
add edx, edx
sub eax, 1
test ebp, 0x8000
je 0x10019ae0
mov dword [esp + 0x34], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x2c]
or eax, edx
or dword [esp + 0x5c], eax
test bl, bl
mov dword [esp + 0x28], eax
je 0x10019b97
mov eax, dword [esp + 0x44]
fld st(0)
mov ecx, dword [esp + 0x6c]
fchs
or dword [eax + ecx], edx
fstp dword [esp + 0x44]
fld dword [esp + 0x44]
mov ecx, dword [esp + 0xb0]
mov eax, ebp
shl eax, 5
add eax, dword [esp + 0x20]
imul eax, dword [esp + 0xb8]
add eax, dword [esp + 0x24]
add eax, eax
add eax, eax
fst dword [eax + ecx]
fsub st(2)
jmp 0x10019bc0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xb0]
shl eax, 5
add eax, dword [esp + 0x20]
imul eax, dword [esp + 0xb8]
add eax, dword [esp + 0x24]
add eax, eax
add eax, eax
fst dword [eax + ecx]
fld st(0)
fadd st(2)
mov edx, dword [esp + 0xb4]
fstp dword [eax + edx]
mov eax, dword [esp + 0x30]
add dword [esp + 0x20], 1
add eax, 1
cmp eax, dword [esp + 0x3c]
mov dword [esp + 0x30], eax
jb 0x1001971f
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x40]
add eax, 1
mov ecx, eax
imul ecx, dword [esp + 0xc0]
add ecx, ebp
cmp eax, dword [esp + 0xa0]
mov dword [esi + ecx*4], edx
mov dword [esp + 0x24], eax
jb 0x100196c9
mov edx, dword [esp + 0x68]
mov edi, dword [esp + 0x40]
add edx, 0xffffffff
cmp edx, 1
mov dword [esp + 0x3c], 1
jbe 0x1001a166
mov dword [esp + 0x60], 4
mov eax, dword [esp + 0x80]
mov esi, dword [edi + ebp*4]
mov eax, dword [eax]
xor ebx, ebx
cmp dword [esp + 0xa0], ebx
mov dword [esp + 0x24], ebx
jbe 0x1001a147
mov ecx, 7
sub ecx, dword [esp + 0x3c]
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x84], ecx
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x54], esi
mov esi, eax
lea eax, [ebx + 2]
imul eax, dword [esp + 0xc0]
add eax, ebp
mov edx, esi
add eax, eax
shr edx, cl
add eax, eax
mov dword [esp + 0x50], eax
mov eax, dword [eax + edi]
and edx, 0xf
cmp edx, dword [0x1009bb40]
mov dword [esp + 0x28], esi
mov dword [esp + 0x48], eax
mov dword [esp + 0x78], edx
je 0x1001a133
mov edx, dword [esp + 0x54]
or edx, eax
or edx, esi
mov ecx, 0x1b
sub ecx, dword [esp + 0x60]
mov dword [esp + 0x5c], edx
shr edx, cl
test dl, 0x3f
je 0x1001a133
mov ebp, dword [esp + 0x3c]
add ebp, ebp
add ebp, ebp
xor eax, eax
mov dword [esp + 0x20], ebp
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x78]
cmp byte [eax + ecx*4 + 0x1009bb48], 0
mov esi, dword [esp + 0x58]
jne 0x1001a0f2
mov edx, dword [ebp*4 + 0x1009ba30]
test dword [esp + 0x5c], edx
mov dword [esp + 0x74], edx
je 0x1001a0f2
mov ecx, dword [ebp*4 + 0x1009bab0]
mov eax, edx
and eax, dword [esp + 0x54]
mov edi, edx
and edi, dword [esp + 0x28]
and edx, dword [esp + 0x48]
shr eax, cl
shr edi, cl
shr edx, cl
add eax, eax
add eax, eax
add eax, eax
or eax, edi
add eax, eax
add eax, eax
add eax, eax
or eax, edx
cmp ebp, 0x1f
mov dword [esp + 0x7c], eax
jne 0x10019d47
add eax, eax
mov dword [esp + 0x7c], eax
mov edx, dword [esp + 0xa8]
mov eax, dword [edx + eax*4]
mov edi, dword [esi]
mov esi, dword [esi + 4]
mov edx, dword [esp + 0x18]
add edi, eax
add esi, eax
movzx eax, byte [edi]
mov eax, dword [eax*4 + 0x1008a1b8]
mov ecx, eax
shr ecx, 0x10
shr edx, 0x10
cmp edx, ecx
mov dword [esp + 0x4c], ecx
jb 0x10019dd1
sub dword [esp + 0x14], ecx
mov edx, dword [esp + 0x14]
mov ecx, eax
and ecx, 0xffff0000
sub dword [esp + 0x18], ecx
test edx, 0x8000
je 0x10019d9f
cmp byte [esi], 0
setne al
jmp 0x10019e76
cmp edx, dword [esp + 0x4c]
jb 0x10019db2
cmp byte [esi], 0
setne byte [esp + 0x12]
shr eax, 8
jmp 0x10019e03
mov cl, byte [esi]
mov dl, cl
xor dl, 1
mov dl, al
setne byte [esp + 0x12]
and dl, 1
xor dl, cl
shr eax, 1
mov byte [esi], dl
mov edx, dword [esp + 0x14]
and al, 0x7f
jmp 0x10019e03
add ecx, ecx
cmp dword [esp + 0x14], ecx
jae 0x10019de6
cmp byte [esi], 0
setne byte [esp + 0x12]
shr eax, 8
jmp 0x10019dff
mov cl, byte [esi]
mov dl, cl
xor dl, 1
setne byte [esp + 0x12]
mov dl, al
and dl, 1
xor dl, cl
shr eax, 1
mov byte [esi], dl
and al, 0x7f
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x38]
mov byte [edi], al
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x10019e53
cmp esi, dword [esp + 0x64]
je 0x10019e48
mov al, byte [esi]
add esi, 1
cmp byte [esp + 0x13], 0xff
mov byte [esp + 0x13], al
je 0x10019e35
movzx eax, al
shl eax, 8
add ecx, eax
jmp 0x10019e4e
cmp al, 0x8f
ja 0x10019e48
movzx eax, al
shl eax, 9
add ecx, eax
mov eax, 7
jmp 0x10019e53
add ecx, 0xff00
mov eax, 8
add edx, edx
add ecx, ecx
sub eax, 1
test edx, 0x8000
je 0x10019e11
mov dword [esp + 0x34], eax
mov al, byte [esp + 0x12]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x38], esi
lea edx, [ebx + 1]
imul edx, dword [esp + 0xc0]
add edx, dword [esp + 0x2c]
mov ecx, ebp
mov esi, 0x80000000
shr esi, cl
mov ecx, dword [esp + 0x70]
add edx, edx
add edx, edx
or dword [edx + ecx], esi
test al, al
mov dword [esp + 0x44], edx
mov dword [esp + 0x4c], esi
je 0x1001a0f2
imul ebx, dword [esp + 0xc0]
mov ecx, dword [esp + 0x6c]
mov esi, dword [edx + ecx]
add ebx, dword [esp + 0x2c]
mov edx, dword [esp + 0x50]
mov edx, dword [edx + ecx]
mov eax, dword [ecx + ebx*4]
mov edi, dword [esp + 0x74]
mov ecx, edx
or ecx, esi
or ecx, eax
test edi, ecx
mov edi, dword [esp + 0x7c]
je 0x10019f2a
and edi, 0xaa
cmp ebp, 0x1f
je 0x10019f0d
mov ecx, 0x1e
sub ecx, ebp
shr eax, cl
shr esi, cl
shr edx, cl
and eax, 2
add eax, eax
add eax, eax
add eax, eax
and esi, 5
or eax, esi
add eax, eax
shr edx, 1
add eax, eax
and edx, 1
or eax, edx
or edi, eax
jmp 0x10019f30
and eax, 1
add eax, eax
add eax, eax
add eax, eax
and esi, 2
or eax, esi
add eax, eax
add eax, eax
add eax, eax
and edx, 1
or eax, edx
or edi, eax
jmp 0x10019f30
and edi, 0xaa
mov edx, dword [esp + 0xac]
mov eax, dword [edx + edi*4]
mov edx, dword [esp + 0x58]
mov edi, dword [edx]
mov esi, dword [edx + 4]
mov edx, dword [esp + 0x18]
mov cl, al
shr eax, 1
add edi, eax
add esi, eax
movzx eax, byte [edi]
mov eax, dword [eax*4 + 0x1008a1b8]
mov ebp, eax
mov ebx, edx
shr ebp, 0x10
shr ebx, 0x10
and cl, 1
cmp ebx, ebp
jb 0x10019fcb
sub dword [esp + 0x14], ebp
mov ebx, eax
and ebx, 0xffff0000
sub edx, ebx
mov ebx, dword [esp + 0x14]
test ebx, 0x8000
mov dword [esp + 0x18], edx
je 0x10019f94
mov dl, byte [esi]
xor dl, cl
setne bl
jmp 0x1001a069
cmp ebx, ebp
mov bl, byte [esi]
mov ebp, dword [esp + 0x14]
jb 0x10019fa8
xor bl, cl
setne bl
shr eax, 8
jmp 0x10019ffc
mov byte [esp + 0x1f], bl
xor bl, cl
xor bl, 1
setne byte [esp + 0x12]
mov bl, byte [esp + 0x12]
mov cl, al
and cl, 1
xor cl, byte [esp + 0x1f]
shr eax, 1
mov byte [esi], cl
and al, 0x7f
jmp 0x10019ffc
lea edx, [ebp + ebp]
cmp dword [esp + 0x14], edx
mov dl, byte [esi]
jae 0x10019fe1
xor dl, cl
setne bl
shr eax, 8
jmp 0x10019ff8
mov bl, dl
xor bl, cl
xor bl, 1
setne bl
mov cl, al
and cl, 1
xor cl, dl
shr eax, 1
mov byte [esi], cl
and al, 0x7f
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x64]
mov byte [edi], al
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x1001a04a
cmp ecx, esi
je 0x1001a03f
mov al, byte [ecx]
add ecx, 1
cmp byte [esp + 0x13], 0xff
mov byte [esp + 0x13], al
je 0x1001a02c
movzx eax, al
shl eax, 8
add edx, eax
jmp 0x1001a045
cmp al, 0x8f
ja 0x1001a03f
movzx eax, al
shl eax, 9
add edx, eax
mov eax, 7
jmp 0x1001a04a
add edx, 0xff00
mov eax, 8
add ebp, ebp
add edx, edx
sub eax, 1
test ebp, 0x8000
je 0x1001a00a
mov dword [esp + 0x34], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x20]
or eax, edx
or dword [esp + 0x5c], eax
test bl, bl
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x28], eax
je 0x1001a0c3
mov eax, dword [esp + 0x44]
fld st(0)
mov ecx, dword [esp + 0x6c]
fchs
or dword [eax + ecx], edx
fstp dword [esp + 0x44]
mov eax, dword [esp + 0x2c]
fld dword [esp + 0x44]
mov ecx, dword [esp + 0xb0]
shl eax, 5
add eax, ebp
imul eax, dword [esp + 0xb8]
add eax, ebx
add eax, eax
add eax, eax
fst dword [eax + ecx]
fsub st(2)
jmp 0x1001a0e8
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xb0]
shl eax, 5
add eax, ebp
imul eax, dword [esp + 0xb8]
add eax, ebx
add eax, eax
add eax, eax
fst dword [eax + ecx]
fld st(0)
fadd st(2)
mov edx, dword [esp + 0xb4]
fstp dword [eax + edx]
mov eax, dword [esp + 0x30]
add eax, 1
add ebp, 1
cmp eax, 4
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], ebp
jb 0x10019ce0
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
lea eax, [ebx + 1]
imul eax, dword [esp + 0xc0]
add eax, dword [esp + 0x2c]
mov esi, edx
mov dword [ecx + eax*4], edx
mov eax, dword [esp + 0x48]
mov edi, ecx
add ebx, 1
cmp ebx, dword [esp + 0xa0]
mov dword [esp + 0x24], ebx
jb 0x10019c6a
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x68]
add dword [esp + 0x60], 4
add eax, 1
add edx, 0xffffffff
cmp eax, edx
mov dword [esp + 0x3c], eax
jb 0x10019c37
cmp dword [esp + 0x68], 1
jbe 0x1001a75e
mov eax, dword [esp + 0xa4]
lea ecx, [edx + ebp*8]
add ecx, ecx
add ecx, ecx
sub eax, ecx
cmp eax, 4
mov dword [esp + 0x3c], 4
jae 0x1001a192
mov dword [esp + 0x3c], eax
cmp dword [esp + 0xa0], 0
mov eax, dword [esp + 0x80]
mov ecx, dword [edi + ebp*4]
mov eax, dword [eax]
mov dword [esp + 0x24], 0
jbe 0x1001a75e
add edx, edx
add edx, edx
mov dword [esp + 0x74], edx
jmp 0x1001a1c6
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x48]
mov esi, dword [esp + 0x24]
mov ebx, dword [esp + 0x74]
add esi, 2
imul esi, dword [esp + 0xc0]
add esi, ebp
add esi, esi
add esi, esi
mov dword [esp + 0x54], ecx
mov ecx, dword [esi + edi]
mov dword [esp + 0x48], ecx
mov ecx, 0x1c
sub ecx, ebx
mov dword [esp + 0x28], eax
shr eax, cl
mov dword [esp + 0x50], esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x30], 0
and eax, 0xf
cmp dword [esp + 0x3c], 0
lea edx, [eax*4 + 0x1009bb48]
mov dword [esp + 0x60], edx
jbe 0x1001a733
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x60]
cmp byte [ecx + eax], 0
jne 0x1001a717
mov ecx, dword [esp + 0xc0]
mov eax, dword [ebx*4 + 0x1009ba30]
add ecx, 0xffffffff
cmp ebp, ecx
mov dword [esp + 0x78], ecx
je 0x1001a2c4
cmp dword [esp + 0x30], 3
jne 0x1001a2c4
cmp dword [esp + 0x68], 8
jne 0x1001a2c4
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0xc0]
mov ecx, dword [esi + edi + 4]
add edx, 1
imul edx, eax
shr ecx, 3
add edx, ebp
mov edx, dword [edi + edx*4 + 4]
and edx, 0x8fffffff
or edx, ecx
mov ecx, dword [esp + 0x24]
imul ecx, eax
add ecx, ebp
mov eax, dword [edi + ecx*4 + 4]
mov ecx, dword [esp + 0x54]
and ecx, 3
add ecx, ecx
and eax, 0x81ffffff
add ecx, ecx
shr edx, 3
or edx, eax
mov eax, dword [esp + 0x28]
add ecx, ecx
and eax, 3
or ecx, eax
mov eax, dword [esp + 0x48]
add ecx, ecx
add ecx, ecx
add ecx, ecx
and eax, 3
or ecx, eax
shr edx, 0x19
add ecx, ecx
or edx, ecx
jmp 0x1001a30e
mov ecx, dword [ebx*4 + 0x1009bab0]
mov edx, eax
and edx, dword [esp + 0x54]
mov ebx, eax
and ebx, dword [esp + 0x28]
and eax, dword [esp + 0x48]
shr edx, cl
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx*4 + 0x1009bab0]
shr ebx, cl
add edx, edx
add edx, edx
add edx, edx
or edx, ebx
mov ebx, dword [esp + 0x20]
mov ecx, dword [ebx*4 + 0x1009bab0]
add edx, edx
add edx, edx
shr eax, cl
add edx, edx
or edx, eax
cmp ebx, 0x1f
jne 0x1001a30e
add edx, edx
test edx, edx
mov eax, dword [esp + 0xa8]
mov eax, dword [eax + edx*4]
je 0x1001a717
mov ecx, dword [esp + 0x58]
mov edi, dword [ecx]
mov esi, dword [ecx + 4]
movzx ecx, byte [edi + eax]
add edi, eax
add esi, eax
mov eax, dword [ecx*4 + 0x1008a1b8]
mov ecx, dword [esp + 0x18]
mov ebp, eax
mov ebx, ecx
shr ebp, 0x10
shr ebx, 0x10
cmp ebx, ebp
jb 0x1001a3a5
sub dword [esp + 0x14], ebp
mov ebx, eax
and ebx, 0xffff0000
sub ecx, ebx
mov ebx, dword [esp + 0x14]
test ebx, 0x8000
mov dword [esp + 0x18], ecx
je 0x1001a375
cmp byte [esi], 0
setne byte [esp + 0x12]
jmp 0x1001a448
cmp ebx, ebp
jb 0x1001a386
cmp byte [esi], 0
setne byte [esp + 0x12]
shr eax, 8
jmp 0x1001a3db
mov cl, byte [esi]
mov bl, cl
xor bl, 1
mov bl, al
setne byte [esp + 0x12]
and bl, 1
xor bl, cl
shr eax, 1
mov byte [esi], bl
mov ebx, dword [esp + 0x14]
and al, 0x7f
jmp 0x1001a3d7
lea ecx, [ebp + ebp]
cmp dword [esp + 0x14], ecx
jae 0x1001a3bc
cmp byte [esi], 0
setne byte [esp + 0x12]
shr eax, 8
jmp 0x1001a3d5
mov cl, byte [esi]
mov bl, cl
xor bl, 1
setne byte [esp + 0x12]
mov bl, al
and bl, 1
xor bl, cl
shr eax, 1
mov byte [esi], bl
and al, 0x7f
mov ebx, ebp
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x38]
mov byte [edi], al
mov edi, dword [esp + 0x64]
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x1001a429
cmp esi, edi
je 0x1001a41e
mov al, byte [esi]
add esi, 1
cmp byte [esp + 0x13], 0xff
mov byte [esp + 0x13], al
je 0x1001a40b
movzx eax, al
shl eax, 8
add ecx, eax
jmp 0x1001a424
cmp al, 0x8f
ja 0x1001a41e
movzx eax, al
shl eax, 9
add ecx, eax
mov eax, 7
jmp 0x1001a429
add ecx, 0xff00
mov eax, 8
add ebx, ebx
add ecx, ecx
sub eax, 1
test ebx, 0x8000
je 0x1001a3e9
mov dword [esp + 0x34], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x38], esi
mov ebp, dword [esp + 0x24]
mov eax, dword [esp + 0xc0]
mov edi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
lea ebx, [ebp + 1]
imul ebx, eax
add ebx, edi
mov esi, 0x80000000
shr esi, cl
mov ecx, dword [esp + 0x70]
add ebx, ebx
add ebx, ebx
or dword [ebx + ecx], esi
cmp byte [esp + 0x12], 0
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x50]
mov dword [esp + 0x44], ebx
je 0x1001a70b
mov ecx, dword [esp + 0x6c]
imul ebp, eax
mov esi, dword [esi + ecx]
add ebp, edi
mov eax, dword [ecx + ebp*4]
mov ebp, dword [esp + 0x78]
cmp dword [esp + 0x2c], ebp
mov edi, dword [ebx + ecx]
je 0x1001a4e7
cmp dword [esp + 0x30], 3
jne 0x1001a4e7
cmp dword [esp + 0x68], 8
jne 0x1001a4e7
mov ecx, dword [ebx + ecx + 4]
and eax, 1
add eax, eax
add eax, eax
add eax, eax
and edi, 2
or eax, edi
add eax, eax
add eax, eax
shr ecx, 0x1d
add eax, eax
and ecx, 4
and edx, 0xaa
or eax, ecx
or eax, edx
and esi, 1
or eax, esi
mov edx, eax
jmp 0x1001a530
mov ebx, dword [esp + 0x20]
and edx, 0xaa
cmp ebx, 0x1f
je 0x1001a515
mov ecx, 0x1e
sub ecx, ebx
shr eax, cl
shr edi, cl
shr esi, cl
and eax, 2
add eax, eax
add eax, eax
add eax, eax
and edi, 5
or eax, edi
shr esi, 1
jmp 0x1001a525
and eax, 1
add eax, eax
add eax, eax
add eax, eax
and edi, 2
or eax, edi
add eax, eax
add eax, eax
and esi, 1
add eax, eax
or eax, esi
or edx, eax
mov eax, dword [esp + 0xac]
mov eax, dword [eax + edx*4]
mov edx, dword [esp + 0x58]
mov edi, dword [edx]
mov esi, dword [edx + 4]
mov cl, al
shr eax, 1
movzx edx, byte [edi + eax]
add edi, eax
add esi, eax
mov eax, dword [edx*4 + 0x1008a1b8]
mov edx, dword [esp + 0x18]
mov ebp, eax
mov ebx, edx
shr ebp, 0x10
shr ebx, 0x10
and cl, 1
cmp ebx, ebp
jb 0x1001a5cc
sub dword [esp + 0x14], ebp
mov ebx, eax
and ebx, 0xffff0000
sub edx, ebx
mov ebx, dword [esp + 0x14]
test ebx, 0x8000
mov dword [esp + 0x18], edx
je 0x1001a595
mov al, byte [esi]
xor al, cl
setne bl
jmp 0x1001a66a
cmp ebx, ebp
mov bl, byte [esi]
mov ebp, dword [esp + 0x14]
jb 0x1001a5a9
xor bl, cl
setne bl
shr eax, 8
jmp 0x1001a5fd
mov byte [esp + 0x1f], bl
xor bl, cl
xor bl, 1
setne byte [esp + 0x12]
mov bl, byte [esp + 0x12]
mov cl, al
and cl, 1
xor cl, byte [esp + 0x1f]
shr eax, 1
mov byte [esi], cl
and al, 0x7f
jmp 0x1001a5fd
lea edx, [ebp + ebp]
cmp dword [esp + 0x14], edx
mov dl, byte [esi]
jae 0x1001a5e2
xor dl, cl
setne bl
shr eax, 8
jmp 0x1001a5f9
mov bl, dl
xor bl, cl
xor bl, 1
setne bl
mov cl, al
and cl, 1
xor cl, dl
shr eax, 1
mov byte [esi], cl
and al, 0x7f
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x64]
mov byte [edi], al
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x1001a64b
cmp ecx, esi
je 0x1001a640
mov al, byte [ecx]
add ecx, 1
cmp byte [esp + 0x13], 0xff
mov byte [esp + 0x13], al
je 0x1001a62d
movzx eax, al
shl eax, 8
add edx, eax
jmp 0x1001a646
cmp al, 0x8f
ja 0x1001a640
movzx eax, al
shl eax, 9
add edx, eax
mov eax, 7
jmp 0x1001a64b
add edx, 0xff00
mov eax, 8
add ebp, ebp
add edx, edx
sub eax, 1
test ebp, 0x8000
je 0x1001a60b
mov dword [esp + 0x34], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x2c]
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x40]
or eax, edx
or dword [esp + 0x5c], eax
test bl, bl
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x28], eax
je 0x1001a6d6
mov eax, dword [esp + 0x44]
fld st(0)
mov ecx, dword [esp + 0x6c]
fchs
or dword [eax + ecx], edx
fstp dword [esp + 0x44]
fld dword [esp + 0x44]
mov ecx, dword [esp + 0xb0]
mov edx, dword [esp + 0xb4]
mov eax, ebp
shl eax, 5
add eax, ebx
imul eax, dword [esp + 0xb8]
add eax, dword [esp + 0x24]
add eax, eax
add eax, eax
fst dword [eax + ecx]
fsub st(2)
fstp dword [eax + edx]
jmp 0x1001a717
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xb0]
shl eax, 5
add eax, dword [esp + 0x20]
mov edx, dword [esp + 0xb4]
imul eax, dword [esp + 0xb8]
add eax, dword [esp + 0x24]
add eax, eax
add eax, eax
fst dword [eax + ecx]
fld st(0)
fadd st(2)
fstp dword [eax + edx]
jmp 0x1001a717
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x40]
mov eax, dword [esp + 0x30]
add eax, 1
add ebx, 1
cmp eax, dword [esp + 0x3c]
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], ebx
jb 0x1001a220
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
add eax, 1
mov ecx, eax
imul ecx, dword [esp + 0xc0]
add ecx, ebp
cmp eax, dword [esp + 0xa0]
mov dword [edi + ecx*4], edx
mov dword [esp + 0x24], eax
jb 0x1001a1be
add ebp, 1
cmp ebp, dword [esp + 0xc0]
mov dword [esp + 0x2c], ebp
jb 0x10019637
mov edx, dword [esp + 0x38]
fstp st(0)
mov eax, dword [esp + 0xbc]
fstp st(0)
mov ecx, dword [esp + 0x14]
mov esi, dword [eax + 0x14]
mov dword [eax + 8], ecx
mov cl, byte [esp + 0x13]
mov byte [eax + 0xc], cl
mov ecx, dword [esp + 0x18]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x34]
mov dword [eax + 0x10], ecx
mov ecx, edx
sub ecx, dword [esp + 0x8c]
pop edi
mov dword [esi + 8], ecx
mov eax, dword [eax + 0x14]
pop esi
pop ebp
mov dword [eax], edx
pop ebx
add esp, 0x80
ret
pop edi
fstp st(0)
pop esi
fstp st(0)
pop ebp
pop ebx
add esp, 0x80
ret