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

Disassembly:
sub esp, 0x5c
mov edx, dword [ecx + 8]
push ebx
mov ebx, dword [esp + 0x74]
push ebp
push esi
mov esi, dword [esp + 0x94]
push edi
mov edi, dword [eax + 8]
mov eax, dword [esp + 0x70]
mov ecx, dword [eax + 8]
mov eax, dword [esi + 0x14]
mov dword [esp + 0x50], edx
mov edx, dword [eax + 4]
mov dword [esp + 0x60], ecx
mov ecx, dword [eax]
mov eax, dword [esi + 8]
mov dword [esp + 0x18], eax
mov al, byte [esi + 0xc]
mov byte [esp + 0x12], al
mov eax, dword [esi + 0x10]
add ebx, 3
mov dword [esp + 0x4c], edx
mov edx, dword [esi + 4]
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 0x18]
sar ebx, 2
mov ebp, 0
mov dword [esp + 0x2c], edi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x48], eax
mov dword [esp + 0x44], ebx
mov dword [esp + 0x34], ebp
je 0x10023fb0
mov ecx, dword [esp + 0x9c]
fld dword [esp + 0x78]
fld dword [esp + 0x74]
lea eax, [edi + ecx]
mov dword [esp + 0x58], eax
jmp 0x10023a27
mov edi, dword [esp + 0x2c]
lea eax, [ebx - 1]
cmp ebp, eax
jae 0x10023a38
mov dword [esp + 0x28], 4
jmp 0x10023a4f
mov eax, dword [esp + 0x80]
lea ecx, [ebx*4]
sub eax, ecx
add eax, 4
mov dword [esp + 0x28], eax
mov cl, byte [edi + ebp]
mov eax, dword [esp + 0x58]
mov al, byte [eax + ebp]
xor edi, edi
cmp dword [esp + 0x7c], edi
mov dword [esp + 0x30], edi
jbe 0x10023f99
jmp 0x10023a73
mov cl, byte [esp + 0x10]
mov al, byte [esp + 0x13]
mov esi, dword [esp + 0x2c]
mov bl, al
lea eax, [edi + 2]
imul eax, dword [esp + 0x9c]
add eax, ebp
mov byte [esp + 0x10], bl
mov dword [esp + 0x64], eax
mov al, byte [eax + esi]
shr ebx, 3
and ebx, 0xf
mov byte [esp + 0x13], al
mov eax, dword [esp + 0x28]
mov esi, ebx
cmp esi, dword [eax*4 + 0x1009bb9c]
mov byte [esp + 0x15], cl
mov dword [esp + 0x5c], esi
je 0x10023f7d
mov bl, cl
or bl, byte [esp + 0x13]
or bl, byte [esp + 0x10]
test bl, 0xfc
mov byte [esp + 0x14], bl
je 0x10023f7d
xor ecx, ecx
test eax, eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x3c], ecx
jbe 0x10023f65
jmp 0x10023ae5
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x3c]
cmp byte [eax + esi*4 + 0x1009bbb0], 0
jne 0x10023f49
mov al, byte [ecx + 0x1009bb88]
test bl, al
mov byte [esp + 0x16], al
je 0x10023f49
mov ecx, dword [ecx*4 + 0x1009bb8c]
movzx esi, byte [esp + 0x15]
movzx edi, byte [esp + 0x10]
movzx eax, al
and esi, eax
movzx ecx, cl
shr esi, cl
and edi, eax
shr edi, cl
mov ebx, edx
add esi, esi
add esi, esi
add esi, esi
or esi, edi
movzx edi, byte [esp + 0x13]
and edi, eax
shr edi, cl
mov ecx, dword [esp + 0x84]
add esi, esi
add esi, esi
add esi, esi
or esi, edi
mov eax, dword [ecx + esi*4]
mov ecx, dword [esp + 0x48]
mov edi, dword [ecx]
mov ebp, dword [ecx + 4]
add edi, eax
add ebp, eax
movzx eax, byte [edi]
mov eax, dword [eax*4 + 0x1008a3f0]
mov ecx, eax
shr ecx, 0x10
shr ebx, 0x10
cmp ebx, ecx
jb 0x10023bcf
sub dword [esp + 0x18], ecx
mov ebx, eax
and ebx, 0xffff0000
sub edx, ebx
mov ebx, dword [esp + 0x18]
test ebx, 0x8000
mov dword [esp + 0x20], edx
je 0x10023b9c
cmp byte [ebp], 0
setne byte [esp + 0x11]
jmp 0x10023c7a
cmp ebx, ecx
jb 0x10023bae
cmp byte [ebp], 0
setne byte [esp + 0x11]
shr eax, 8
jmp 0x10023c07
mov cl, byte [ebp]
mov bl, cl
xor bl, 1
mov bl, al
setne byte [esp + 0x11]
and bl, 1
xor bl, cl
shr eax, 1
mov byte [ebp], bl
mov ebx, dword [esp + 0x18]
and al, 0x7f
jmp 0x10023c07
lea edx, [ecx + ecx]
cmp dword [esp + 0x18], edx
jae 0x10023be6
cmp byte [ebp], 0
setne byte [esp + 0x11]
shr eax, 8
jmp 0x10023c01
mov dl, byte [ebp]
mov bl, dl
xor bl, 1
setne byte [esp + 0x11]
mov bl, al
and bl, 1
xor bl, dl
shr eax, 1
mov byte [ebp], bl
and al, 0x7f
mov edx, dword [esp + 0x20]
mov ebx, ecx
mov ebp, dword [esp + 0x4c]
mov cl, byte [esp + 0x12]
mov byte [edi], al
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x10023c57
cmp edi, ebp
je 0x10023c4c
cmp cl, 0xff
mov cl, byte [edi]
je 0x10023c35
movzx eax, cl
shl eax, 8
add edi, 1
add edx, eax
jmp 0x10023c52
add edi, 1
cmp cl, 0x8f
ja 0x10023c4c
movzx eax, cl
shl eax, 9
add edx, eax
mov eax, 7
jmp 0x10023c57
add edx, 0xff00
mov eax, 8
add ebx, ebx
add edx, edx
sub eax, 1
test ebx, 0x8000
je 0x10023c19
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x24], edi
mov byte [esp + 0x12], cl
mov edi, dword [esp + 0x30]
mov ebp, dword [esp + 0x34]
mov ebx, dword [esp + 0x60]
lea ecx, [edi + 1]
imul ecx, dword [esp + 0x9c]
lea eax, [ecx + ebp]
mov ecx, dword [esp + 0x40]
mov edx, 0x40
sar edx, cl
mov dword [esp + 0x38], eax
or byte [eax + ebx], dl
cmp byte [esp + 0x11], 0
mov dword [esp + 0x54], edx
je 0x10023f41
mov edx, edi
imul edx, dword [esp + 0x9c]
mov edi, dword [esp + 0x50]
mov al, byte [eax + edi]
add edx, ebp
mov bl, byte [edx + edi]
mov edx, dword [esp + 0x64]
mov dl, byte [edx + edi]
mov byte [esp + 0x17], dl
or dl, al
mov byte [esp + 0x11], al
movzx eax, byte [esp + 0x16]
or dl, bl
and esi, 0xaa
test al, dl
je 0x10023d29
movzx edi, byte [esp + 0x11]
mov eax, 5
sub eax, ecx
movzx edx, al
movzx eax, bl
mov cl, dl
shr eax, cl
shr edi, cl
and eax, 2
add eax, eax
add eax, eax
and edi, 5
add eax, eax
or eax, edi
movzx edi, byte [esp + 0x17]
shr edi, cl
add eax, eax
add eax, eax
shr edi, 1
and edi, 1
or eax, edi
or eax, esi
jmp 0x10023d2b
mov eax, esi
mov ecx, dword [esp + 0x88]
mov eax, dword [ecx + eax*4]
mov edx, dword [esp + 0x48]
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 + 0x1008a3f0]
mov edx, dword [esp + 0x20]
mov ebp, eax
mov ebx, edx
shr ebp, 0x10
shr ebx, 0x10
and cl, 1
cmp ebx, ebp
jb 0x10023dc7
sub dword [esp + 0x18], ebp
mov ebx, eax
and ebx, 0xffff0000
sub edx, ebx
mov ebx, dword [esp + 0x18]
test ebx, 0x8000
mov dword [esp + 0x20], edx
je 0x10023d92
mov al, byte [esi]
xor al, cl
setne byte [esp + 0x11]
jmp 0x10023e75
cmp ebx, ebp
mov bl, byte [esi]
mov ebp, dword [esp + 0x18]
jb 0x10023da8
xor bl, cl
setne byte [esp + 0x11]
shr eax, 8
jmp 0x10023dfc
mov byte [esp + 0x17], bl
xor bl, cl
xor bl, 1
setne byte [esp + 0x11]
mov cl, al
and cl, 1
xor cl, byte [esp + 0x17]
shr eax, 1
mov byte [esi], cl
and al, 0x7f
jmp 0x10023dfc
lea edx, [ebp + ebp]
cmp dword [esp + 0x18], edx
mov dl, byte [esi]
jae 0x10023ddf
xor dl, cl
setne byte [esp + 0x11]
shr eax, 8
jmp 0x10023df8
mov bl, dl
xor bl, cl
xor bl, 1
setne byte [esp + 0x11]
mov cl, al
and cl, 1
xor cl, dl
shr eax, 1
mov byte [esi], cl
and al, 0x7f
mov edx, dword [esp + 0x20]
mov byte [edi], al
mov al, byte [esp + 0x12]
mov edi, dword [esp + 0x4c]
mov esi, 8
lea ebx, [esi - 7]
cmp dword [esp + 0x1c], 0
jne 0x10023e59
mov ecx, dword [esp + 0x24]
cmp ecx, edi
je 0x10023e4f
cmp al, 0xff
mov al, byte [ecx]
je 0x10023e33
add ecx, ebx
mov dword [esp + 0x24], ecx
movzx ecx, al
shl ecx, 8
add edx, ecx
jmp 0x10023e55
add ecx, ebx
cmp al, 0x8f
mov dword [esp + 0x24], ecx
ja 0x10023e4f
movzx ecx, al
shl ecx, 9
add edx, ecx
mov dword [esp + 0x1c], 7
jmp 0x10023e59
add edx, 0xff00
mov dword [esp + 0x1c], esi
sub dword [esp + 0x1c], ebx
add ebp, ebp
add edx, edx
test ebp, 0x8000
je 0x10023e0e
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], ebp
mov byte [esp + 0x12], al
mov al, byte [esp + 0x54]
mov ecx, dword [esp + 0x40]
or byte [esp + 0x10], al
cmp ecx, 3
mov ebp, dword [esp + 0x34]
mov edi, dword [esp + 0x38]
jne 0x10023ea2
mov eax, dword [esp + 0x44]
add eax, 0xffffffff
cmp ebp, eax
je 0x10023ea2
mov eax, dword [esp + 0x2c]
or byte [edi + eax + 1], 0x80
mov bl, byte [esp + 0x14]
or bl, byte [esp + 0x10]
cmp byte [esp + 0x11], 0
mov byte [esp + 0x14], bl
je 0x10023f12
mov esi, dword [esp + 0x50]
mov al, byte [esp + 0x54]
or byte [edi + esi], al
cmp ecx, 3
jne 0x10023ed9
mov eax, dword [esp + 0x44]
add eax, 0xffffffff
cmp ebp, eax
je 0x10023ed9
or byte [edi + esi + 1], 0x80
lea eax, [edi + esi + 1]
mov edi, dword [esp + 0x30]
fld st(0)
mov esi, dword [esp + 0x8c]
fchs
lea eax, [ecx + ebp*4]
fstp dword [esp + 0x54]
imul eax, dword [esp + 0x94]
fld dword [esp + 0x54]
add eax, edi
add eax, eax
add eax, eax
fst dword [eax + esi]
mov esi, dword [esp + 0x90]
fsub st(2)
fstp dword [eax + esi]
jmp 0x10023f49
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x8c]
lea eax, [ecx + ebp*4]
imul eax, dword [esp + 0x94]
add eax, edi
add eax, eax
add eax, eax
fst dword [eax + esi]
mov esi, dword [esp + 0x90]
fld st(0)
fadd st(2)
fstp dword [eax + esi]
jmp 0x10023f49
mov bl, byte [esp + 0x14]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x3c]
add eax, 1
add ecx, 1
cmp eax, dword [esp + 0x28]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ecx
jb 0x10023ae1
mov al, byte [esp + 0x10]
mov esi, dword [esp + 0x2c]
lea ecx, [edi + 1]
imul ecx, dword [esp + 0x9c]
add ecx, ebp
mov byte [ecx + esi], al
add edi, 1
cmp edi, dword [esp + 0x7c]
mov dword [esp + 0x30], edi
jb 0x10023a6b
mov ebx, dword [esp + 0x44]
mov esi, dword [esp + 0x98]
add ebp, 1
cmp ebp, ebx
mov dword [esp + 0x34], ebp
jb 0x10023a23
mov ecx, dword [esp + 0x24]
fstp st(0)
fstp st(0)
mov eax, dword [esp + 0x18]
mov dword [esi + 8], eax
mov al, byte [esp + 0x12]
mov byte [esi + 0xc], al
mov dword [esi + 4], edx
mov edx, dword [esp + 0x1c]
mov dword [esi + 0x10], edx
mov edx, dword [esi + 0x14]
mov eax, ecx
sub eax, dword [esp + 0x68]
pop edi
mov dword [edx + 8], eax
mov eax, dword [esi + 0x14]
pop esi
pop ebp
mov dword [eax], ecx
pop ebx
add esp, 0x5c
ret