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

Disassembly:
sub esp, 0x80
mov eax, dword [esp + 0xa4]
push ebx
push ebp
push esi
mov esi, dword [ecx + 8]
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x90]
mov dword [esp + 0x64], 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 + 0x5c], 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 + 0x34], ecx
mov ecx, dword [eax + 0x18]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x9c]
add ecx, 3
xor ebp, ebp
sar ecx, 2
cmp dword [esp + 0xb4], ebp
push edi
mov dword [esp + 0x40], esi
mov dword [esp + 0x34], edx
mov dword [esp + 0x8c], edx
mov dword [esp + 0x2c], ebp
jbe 0x10019550
fld dword [esp + 0x98]
jmp 0x1001847b
mov esi, dword [esp + 0x40]
mov ecx, dword [esp + 0x88]
cmp ecx, 8
jl 0x10018487
mov eax, 8
jmp 0x10018495
mov eax, ecx
and eax, 0x80000007
jns 0x10018495
dec eax
or eax, 0xfffffff8
inc eax
sub ecx, eax
test eax, eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x88], ecx
je 0x1001958b
cmp eax, 1
jbe 0x100184b9
mov dword [esp + 0x3c], 4
jmp 0x100184cb
mov eax, dword [esp + 0xa0]
mov edx, ebp
shl edx, 5
sub eax, edx
mov dword [esp + 0x3c], eax
cmp dword [esp + 0x9c], 0
mov eax, dword [esi + ebp*4]
mov ecx, dword [esp + 0xb8]
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 0x10018a2c
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x40]
add eax, 2
imul eax, dword [esp + 0xb8]
add eax, ebp
add eax, eax
add eax, eax
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x4c], 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 + 0x1c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x58], ecx
jbe 0x100189fd
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x30]
cmp byte [edx + eax], 0
jne 0x100189e3
test ebp, ebp
mov esi, dword [esp + 0x1c]
mov eax, dword [esi*4 + 0x1009ba30]
je 0x100185f3
cmp dword [esp + 0x30], 0
jne 0x100185f3
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0xb8]
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 + 0x4c]
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 + 0x50]
shr ecx, 3
and eax, 0xc0ffffff
add edx, edx
or ecx, eax
add edx, edx
shr ecx, 0x18
or edx, ecx
jmp 0x10018627
mov ecx, dword [esi*4 + 0x1009bab0]
mov edx, eax
and edx, dword [esp + 0x50]
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 0x10018627
add edx, edx
test edx, edx
mov ecx, dword [esp + 0xa4]
mov eax, dword [ecx + edx*4]
je 0x100189e3
mov ecx, dword [esp + 0x54]
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 + 0x44], ecx
jb 0x100186bd
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 0x1001868b
cmp byte [esi], 0
setne al
jmp 0x10018764
cmp ebx, dword [esp + 0x44]
jb 0x1001869e
cmp byte [esi], 0
setne byte [esp + 0x12]
shr eax, 8
jmp 0x100186ef
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 0x100186ef
add ecx, ecx
cmp dword [esp + 0x14], ecx
jae 0x100186d2
cmp byte [esi], 0
setne byte [esp + 0x12]
shr eax, 8
jmp 0x100186eb
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 + 0x44]
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
mov byte [edi], al
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0x60]
test eax, eax
jne 0x10018741
cmp esi, edi
je 0x10018736
mov al, byte [esi]
add esi, 1
cmp byte [esp + 0x13], 0xff
mov byte [esp + 0x13], al
je 0x10018723
movzx eax, al
shl eax, 8
add ecx, eax
jmp 0x1001873c
cmp al, 0x8f
ja 0x10018736
movzx eax, al
shl eax, 9
add ecx, eax
mov eax, 7
jmp 0x10018741
add ecx, 0xff00
mov eax, 8
add ebx, ebx
add ecx, ecx
sub eax, 1
test ebx, 0x8000
je 0x10018701
mov dword [esp + 0x38], eax
mov al, byte [esp + 0x12]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x34], esi
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
add ebx, 1
imul ebx, dword [esp + 0xb8]
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 + 0x6c], ebx
mov dword [esp + 0x44], esi
je 0x100189e3
mov eax, dword [esp + 0x24]
imul eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x4c]
mov edi, dword [edi + ecx]
add eax, ebp
test ebp, ebp
mov esi, dword [ecx + eax*4]
mov eax, dword [ebx + ecx]
je 0x100187f5
cmp dword [esp + 0x30], 0
jne 0x100187f5
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 0x1001883e
and edx, 0xaa
cmp dword [esp + 0x1c], 0x1f
je 0x10018823
mov ecx, 0x1e
sub ecx, dword [esp + 0x1c]
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 0x10018833
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 + 0xa8]
mov eax, dword [eax + edx*4]
mov edx, dword [esp + 0x54]
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 0x100188da
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 0x100188a3
mov al, byte [esi]
xor al, cl
setne bl
jmp 0x10018978
cmp ebx, ebp
mov bl, byte [esi]
mov ebp, dword [esp + 0x14]
jb 0x100188b7
xor bl, cl
setne bl
shr eax, 8
jmp 0x1001890b
mov byte [esp + 0x23], 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 + 0x23]
shr eax, 1
mov byte [esi], cl
and al, 0x7f
jmp 0x1001890b
lea edx, [ebp + ebp]
cmp dword [esp + 0x14], edx
mov dl, byte [esi]
jae 0x100188f0
xor dl, cl
setne bl
shr eax, 8
jmp 0x10018907
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 + 0x60]
mov ecx, dword [esp + 0x34]
mov byte [edi], al
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x10018959
cmp ecx, esi
je 0x1001894e
mov al, byte [ecx]
add ecx, 1
cmp byte [esp + 0x13], 0xff
mov byte [esp + 0x13], al
je 0x1001893b
movzx eax, al
shl eax, 8
add edx, eax
jmp 0x10018954
cmp al, 0x8f
ja 0x1001894e
movzx eax, al
shl eax, 9
add edx, eax
mov eax, 7
jmp 0x10018959
add edx, 0xff00
mov eax, 8
add ebp, ebp
add edx, edx
sub eax, 1
test ebp, 0x8000
je 0x10018919
mov dword [esp + 0x38], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x34], ecx
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x44]
mov ebp, dword [esp + 0x2c]
or eax, edx
or dword [esp + 0x5c], eax
test bl, bl
mov dword [esp + 0x28], eax
je 0x100189c2
mov ecx, dword [esp + 0x68]
fld st(0)
mov eax, dword [esp + 0x6c]
fchs
or dword [eax + ecx], edx
mov edx, dword [esp + 0xac]
mov ecx, ebp
shl ecx, 5
add ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0xb0]
add ecx, dword [esp + 0x24]
fstp dword [edx + ecx*4]
jmp 0x100189e3
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xac]
shl eax, 5
add eax, dword [esp + 0x1c]
imul eax, dword [esp + 0xb0]
add eax, dword [esp + 0x24]
fst dword [ecx + eax*4]
mov eax, dword [esp + 0x30]
add dword [esp + 0x1c], 1
add eax, 1
cmp eax, dword [esp + 0x3c]
mov dword [esp + 0x30], eax
jb 0x10018558
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x40]
add eax, 1
mov edx, eax
imul edx, dword [esp + 0xb8]
add edx, ebp
cmp eax, dword [esp + 0x9c]
mov dword [esi + edx*4], ecx
mov dword [esp + 0x24], eax
jb 0x10018502
mov edx, dword [esp + 0x64]
mov edi, dword [esp + 0x40]
add edx, 0xffffffff
cmp edx, 1
mov dword [esp + 0x3c], 1
jbe 0x10018f61
mov dword [esp + 0x58], 4
mov edx, dword [esp + 0x80]
mov esi, dword [edi + ebp*4]
mov eax, dword [edx]
xor ebx, ebx
cmp dword [esp + 0x9c], ebx
mov dword [esp + 0x24], ebx
jbe 0x10018f42
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 + 0x50], esi
mov esi, eax
lea eax, [ebx + 2]
imul eax, dword [esp + 0xb8]
add eax, ebp
mov edx, esi
add eax, eax
shr edx, cl
add eax, eax
mov dword [esp + 0x4c], 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 0x10018f2e
mov edx, dword [esp + 0x50]
or edx, eax
or edx, esi
mov ecx, 0x1b
sub ecx, dword [esp + 0x58]
mov dword [esp + 0x5c], edx
shr edx, cl
test dl, 0x3f
je 0x10018f2e
mov ebp, dword [esp + 0x3c]
add ebp, ebp
add ebp, ebp
xor eax, eax
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x78]
cmp byte [eax + ecx*4 + 0x1009bb48], 0
mov esi, dword [esp + 0x54]
jne 0x10018eeb
mov edx, dword [ebp*4 + 0x1009ba30]
test dword [esp + 0x5c], edx
mov dword [esp + 0x74], edx
je 0x10018eeb
mov ecx, dword [ebp*4 + 0x1009bab0]
mov eax, edx
and eax, dword [esp + 0x50]
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 0x10018b60
add eax, eax
mov dword [esp + 0x7c], eax
mov edx, dword [esp + 0xa4]
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 + 0x44], ecx
jb 0x10018bea
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 0x10018bb8
cmp byte [esi], 0
setne al
jmp 0x10018c8f
cmp edx, dword [esp + 0x44]
jb 0x10018bcb
cmp byte [esi], 0
setne byte [esp + 0x12]
shr eax, 8
jmp 0x10018c1c
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 0x10018c1c
add ecx, ecx
cmp dword [esp + 0x14], ecx
jae 0x10018bff
cmp byte [esi], 0
setne byte [esp + 0x12]
shr eax, 8
jmp 0x10018c18
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 + 0x44]
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
mov byte [edi], al
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x10018c6c
cmp esi, dword [esp + 0x60]
je 0x10018c61
mov al, byte [esi]
add esi, 1
cmp byte [esp + 0x13], 0xff
mov byte [esp + 0x13], al
je 0x10018c4e
movzx eax, al
shl eax, 8
add ecx, eax
jmp 0x10018c67
cmp al, 0x8f
ja 0x10018c61
movzx eax, al
shl eax, 9
add ecx, eax
mov eax, 7
jmp 0x10018c6c
add ecx, 0xff00
mov eax, 8
add edx, edx
add ecx, ecx
sub eax, 1
test edx, 0x8000
je 0x10018c2a
mov dword [esp + 0x38], eax
mov al, byte [esp + 0x12]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x34], esi
lea edx, [ebx + 1]
imul edx, dword [esp + 0xb8]
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 + 0x6c], edx
mov dword [esp + 0x44], esi
je 0x10018eeb
imul ebx, dword [esp + 0xb8]
mov ecx, dword [esp + 0x68]
mov esi, dword [edx + ecx]
add ebx, dword [esp + 0x2c]
mov edx, dword [esp + 0x4c]
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 0x10018d43
and edi, 0xaa
cmp ebp, 0x1f
je 0x10018d26
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 0x10018d49
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 0x10018d49
and edi, 0xaa
mov edx, dword [esp + 0xa8]
mov eax, dword [edx + edi*4]
mov edx, dword [esp + 0x54]
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 0x10018de4
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 0x10018dad
mov dl, byte [esi]
xor dl, cl
setne bl
jmp 0x10018e82
cmp ebx, ebp
mov bl, byte [esi]
mov ebp, dword [esp + 0x14]
jb 0x10018dc1
xor bl, cl
setne bl
shr eax, 8
jmp 0x10018e15
mov byte [esp + 0x23], 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 + 0x23]
shr eax, 1
mov byte [esi], cl
and al, 0x7f
jmp 0x10018e15
lea edx, [ebp + ebp]
cmp dword [esp + 0x14], edx
mov dl, byte [esi]
jae 0x10018dfa
xor dl, cl
setne bl
shr eax, 8
jmp 0x10018e11
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 + 0x34]
mov esi, dword [esp + 0x60]
mov byte [edi], al
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x10018e63
cmp ecx, esi
je 0x10018e58
mov al, byte [ecx]
add ecx, 1
cmp byte [esp + 0x13], 0xff
mov byte [esp + 0x13], al
je 0x10018e45
movzx eax, al
shl eax, 8
add edx, eax
jmp 0x10018e5e
cmp al, 0x8f
ja 0x10018e58
movzx eax, al
shl eax, 9
add edx, eax
mov eax, 7
jmp 0x10018e63
add edx, 0xff00
mov eax, 8
add ebp, ebp
add edx, edx
sub eax, 1
test ebp, 0x8000
je 0x10018e23
mov dword [esp + 0x38], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x34], ecx
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x44]
mov ebp, dword [esp + 0x1c]
or eax, edx
or dword [esp + 0x5c], eax
test bl, bl
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x28], eax
je 0x10018ece
mov ecx, dword [esp + 0x68]
fld st(0)
mov eax, dword [esp + 0x6c]
fchs
or dword [eax + ecx], edx
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0xac]
shl ecx, 5
add ecx, ebp
imul ecx, dword [esp + 0xb0]
add ecx, ebx
fstp dword [edx + ecx*4]
jmp 0x10018eeb
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xac]
shl eax, 5
add eax, ebp
imul eax, dword [esp + 0xb0]
add eax, ebx
fst dword [ecx + eax*4]
mov eax, dword [esp + 0x30]
add eax, 1
add ebp, 1
cmp eax, 4
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], ebp
jb 0x10018af9
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x40]
lea edx, [ebx + 1]
imul edx, dword [esp + 0xb8]
add edx, dword [esp + 0x2c]
mov esi, ecx
mov dword [eax + edx*4], ecx
mov eax, dword [esp + 0x48]
add ebx, 1
cmp ebx, dword [esp + 0x9c]
mov dword [esp + 0x24], ebx
jb 0x10018a83
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x64]
add dword [esp + 0x58], 4
add eax, 1
add edx, 0xffffffff
cmp eax, edx
mov dword [esp + 0x3c], eax
jb 0x10018a50
cmp dword [esp + 0x64], 1
jbe 0x1001952f
mov eax, dword [esp + 0xa0]
lea ecx, [edx + ebp*8]
add ecx, ecx
add ecx, ecx
sub eax, ecx
cmp eax, 4
mov dword [esp + 0x3c], 4
jae 0x10018f8d
mov dword [esp + 0x3c], eax
cmp dword [esp + 0x9c], 0
mov eax, dword [esp + 0x80]
mov ecx, dword [edi + ebp*4]
mov eax, dword [eax]
mov dword [esp + 0x24], 0
jbe 0x1001952f
add edx, edx
add edx, edx
mov dword [esp + 0x74], edx
jmp 0x10018fc1
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
mov ebx, dword [esp + 0x74]
add esi, 2
imul esi, dword [esp + 0xb8]
add esi, ebp
add esi, esi
add esi, esi
mov dword [esp + 0x50], 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 + 0x4c], esi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x30], 0
and eax, 0xf
cmp dword [esp + 0x3c], 0
lea edx, [eax*4 + 0x1009bb48]
mov dword [esp + 0x58], edx
jbe 0x10019504
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x58]
cmp byte [ecx + eax], 0
jne 0x100194e8
mov ecx, dword [esp + 0xb8]
mov eax, dword [ebx*4 + 0x1009ba30]
add ecx, 0xffffffff
cmp ebp, ecx
mov dword [esp + 0x78], ecx
je 0x100190bf
cmp dword [esp + 0x30], 3
jne 0x100190bf
cmp dword [esp + 0x64], 8
jne 0x100190bf
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0xb8]
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 + 0x50]
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 0x10019109
mov ecx, dword [ebx*4 + 0x1009bab0]
mov edx, eax
and edx, dword [esp + 0x50]
mov ebx, eax
and ebx, dword [esp + 0x28]
and eax, dword [esp + 0x48]
shr edx, cl
mov ecx, dword [esp + 0x1c]
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 + 0x1c]
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 0x10019109
add edx, edx
test edx, edx
mov eax, dword [esp + 0xa4]
mov eax, dword [eax + edx*4]
je 0x100194e8
mov ecx, dword [esp + 0x54]
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 0x100191a0
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 0x10019170
cmp byte [esi], 0
setne byte [esp + 0x12]
jmp 0x10019243
cmp ebx, ebp
jb 0x10019181
cmp byte [esi], 0
setne byte [esp + 0x12]
shr eax, 8
jmp 0x100191d6
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 0x100191d2
lea ecx, [ebp + ebp]
cmp dword [esp + 0x14], ecx
jae 0x100191b7
cmp byte [esi], 0
setne byte [esp + 0x12]
shr eax, 8
jmp 0x100191d0
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 + 0x34]
mov byte [edi], al
mov edi, dword [esp + 0x60]
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x10019224
cmp esi, edi
je 0x10019219
mov al, byte [esi]
add esi, 1
cmp byte [esp + 0x13], 0xff
mov byte [esp + 0x13], al
je 0x10019206
movzx eax, al
shl eax, 8
add ecx, eax
jmp 0x1001921f
cmp al, 0x8f
ja 0x10019219
movzx eax, al
shl eax, 9
add ecx, eax
mov eax, 7
jmp 0x10019224
add ecx, 0xff00
mov eax, 8
add ebx, ebx
add ecx, ecx
sub eax, 1
test ebx, 0x8000
je 0x100191e4
mov dword [esp + 0x38], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x34], esi
mov ebp, dword [esp + 0x24]
mov eax, dword [esp + 0xb8]
mov edi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
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 + 0x44], esi
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x6c], ebx
je 0x100194dc
mov ecx, dword [esp + 0x68]
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 0x100192e2
cmp dword [esp + 0x30], 3
jne 0x100192e2
cmp dword [esp + 0x64], 8
jne 0x100192e2
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 0x1001932b
mov ebx, dword [esp + 0x1c]
and edx, 0xaa
cmp ebx, 0x1f
je 0x10019310
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 0x10019320
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 + 0xa8]
mov eax, dword [eax + edx*4]
mov edx, dword [esp + 0x54]
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 0x100193c7
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 0x10019390
mov al, byte [esi]
xor al, cl
setne bl
jmp 0x10019465
cmp ebx, ebp
mov bl, byte [esi]
mov ebp, dword [esp + 0x14]
jb 0x100193a4
xor bl, cl
setne bl
shr eax, 8
jmp 0x100193f8
mov byte [esp + 0x23], 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 + 0x23]
shr eax, 1
mov byte [esi], cl
and al, 0x7f
jmp 0x100193f8
lea edx, [ebp + ebp]
cmp dword [esp + 0x14], edx
mov dl, byte [esi]
jae 0x100193dd
xor dl, cl
setne bl
shr eax, 8
jmp 0x100193f4
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 + 0x34]
mov esi, dword [esp + 0x60]
mov byte [edi], al
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x10019446
cmp ecx, esi
je 0x1001943b
mov al, byte [ecx]
add ecx, 1
cmp byte [esp + 0x13], 0xff
mov byte [esp + 0x13], al
je 0x10019428
movzx eax, al
shl eax, 8
add edx, eax
jmp 0x10019441
cmp al, 0x8f
ja 0x1001943b
movzx eax, al
shl eax, 9
add edx, eax
mov eax, 7
jmp 0x10019446
add edx, 0xff00
mov eax, 8
add ebp, ebp
add edx, edx
sub eax, 1
test ebp, 0x8000
je 0x10019406
mov dword [esp + 0x38], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x34], ecx
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x44]
mov ebp, dword [esp + 0x2c]
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x40]
or eax, edx
or dword [esp + 0x5c], eax
test bl, bl
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
je 0x100194b9
mov ecx, dword [esp + 0x68]
fld st(0)
mov eax, dword [esp + 0x6c]
fchs
or dword [eax + ecx], edx
mov edx, dword [esp + 0xac]
mov ecx, ebp
shl ecx, 5
add ecx, ebx
imul ecx, dword [esp + 0xb0]
add ecx, dword [esp + 0x24]
fstp dword [edx + ecx*4]
jmp 0x100194e8
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xac]
shl eax, 5
add eax, dword [esp + 0x1c]
imul eax, dword [esp + 0xb0]
add eax, dword [esp + 0x24]
fst dword [ecx + eax*4]
jmp 0x100194e8
mov ebx, dword [esp + 0x1c]
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 + 0x1c], ebx
jb 0x1001901b
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
add eax, 1
mov edx, eax
imul edx, dword [esp + 0xb8]
add edx, ebp
cmp eax, dword [esp + 0x9c]
mov dword [edi + edx*4], ecx
mov dword [esp + 0x24], eax
jb 0x10018fb9
add ebp, 1
cmp ebp, dword [esp + 0xb8]
mov dword [esp + 0x2c], ebp
jb 0x10018470
mov edx, dword [esp + 0x34]
fstp st(0)
mov eax, dword [esp + 0xb4]
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 + 0x38]
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
pop ebp
pop ebx
add esp, 0x80
ret