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

Disassembly:
sub esp, 0x64
push ebx
mov ebx, dword [esp + 0x70]
push ebp
push esi
push edi
mov edi, ecx
mov ecx, 4
cmp ebx, ecx
mov dword [esp + 0x18], ecx
jge 0x109f383e
mov dword [esp + 0x18], ebx
cmp eax, ecx
mov dword [esp + 0x14], ecx
jge 0x109f384a
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0x78]
mov ecx, ebx
imul ecx, eax
lea edx, [edi + ecx*4]
mov dword [esp + 0x34], edx
cdq
and edx, 3
add eax, edx
xor ebp, ebp
mov ecx, eax
sar ecx, 2
mov dword [esp + 0x20], ebp
mov dword [esp + 0x3c], ecx
cmp ecx, 1
mov dword [esp + 0x78], edi
mov eax, ecx
jge 0x109f387f
mov eax, 1
cmp dword [esp + 0x20], eax
jge 0x109f3bfd
mov eax, ebx
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x40], eax
lea esp, [esp]
cmp eax, 1
jge 0x109f38aa
mov eax, 1
cmp dword [esp + 0x1c], eax
jge 0x109f3be9
mov ecx, dword [esi + 4]
mov eax, dword [esi]
mov edx, dword [esi + 0xc]
add esi, 0x10
mov dword [esp + 0x28], ecx
mov ecx, dword [esi - 8]
mov dword [esp + 0x38], esi
mov esi, eax
movzx edi, ah
and esi, 0xff
cmp esi, edi
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], edx
jbe 0x109f3995
lea eax, [esi + esi*2]
lea ebx, [edi + eax*2]
mov eax, 0x24924925
mul ebx
sub ebx, edx
shr ebx, 1
add ebx, edx
shr ebx, 2
shl ebx, 0x18
mov dword [esp + 0x5c], ebx
lea edx, [esi + esi*4]
lea ebx, [edx + edi*2]
mov eax, 0x24924925
mul ebx
sub ebx, edx
shr ebx, 1
add ebx, edx
shr ebx, 2
shl ebx, 0x18
mov dword [esp + 0x60], ebx
lea eax, [edi + edi*2]
lea ebx, [eax + esi*4]
mov eax, 0x24924925
mul ebx
sub ebx, edx
shr ebx, 1
add ebx, edx
shr ebx, 2
shl ebx, 0x18
mov dword [esp + 0x64], ebx
lea edx, [esi + esi*2]
lea ebx, [edx + edi*4]
mov eax, 0x24924925
mul ebx
sub ebx, edx
shr ebx, 1
add ebx, edx
shr ebx, 2
shl ebx, 0x18
mov dword [esp + 0x68], ebx
lea eax, [edi + edi*4]
lea ebx, [eax + esi*2]
mov eax, 0x24924925
mul ebx
sub ebx, edx
shr ebx, 1
add ebx, edx
shr ebx, 2
shl ebx, 0x18
mov dword [esp + 0x6c], ebx
lea edx, [edi + edi*2]
lea ebx, [esi + edx*2]
mov eax, 0x24924925
mul ebx
sub ebx, edx
shr ebx, 1
add ebx, edx
shr ebx, 2
shl ebx, 0x18
mov dword [esp + 0x70], ebx
jmp 0x109f39f7
lea edx, [edi + esi*4]
mov eax, 0xcccccccd
mul edx
shr edx, 2
shl edx, 0x18
mov dword [esp + 0x5c], edx
lea eax, [esi + esi*2]
lea edx, [eax + edi*2]
mov eax, 0xcccccccd
mul edx
shr edx, 2
shl edx, 0x18
mov dword [esp + 0x60], edx
lea eax, [edi + edi*2]
lea edx, [eax + esi*2]
mov eax, 0xcccccccd
mul edx
shr edx, 2
shl edx, 0x18
mov dword [esp + 0x64], edx
lea edx, [esi + edi*4]
mov eax, 0xcccccccd
mul edx
shr edx, 2
shl edx, 0x18
mov dword [esp + 0x68], edx
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x70], 0xff000000
mov edx, ecx
mov eax, ecx
and eax, 0xe000
shl esi, 0x18
shl edi, 0x18
shr edx, 1
mov dword [esp + 0x54], esi
mov esi, ecx
mov dword [esp + 0x58], edi
mov edi, ecx
and edx, 0x300
mov ebx, ecx
and esi, 0xf800
and edi, 0x7e0
shl esi, 5
or esi, eax
mov eax, ecx
and eax, 0x1f
shl eax, 3
shl edi, 5
or edi, edx
mov edx, ecx
shr ebx, 5
shr edx, 2
mov ebp, ecx
and edx, 7
or eax, edx
mov edx, ecx
mov dword [esp + 0x10], eax
mov eax, ebx
and eax, 0x7000000
and ebx, 0xe000
and edx, 0xf80000ff
or edx, eax
mov eax, ecx
and ecx, 0x1f0000
or ebx, ecx
mov ecx, dword [esp + 0x10]
or ecx, edi
shr eax, 6
and ebp, 0x7e00000
shr ebx, 0xd
and eax, 0x180000
or eax, ebp
shl esi, 3
or ecx, esi
mov dword [esp + 0x44], ecx
mov ecx, ebx
shr eax, 0xb
or ecx, eax
shr edx, 8
or ecx, edx
mov dword [esp + 0x48], ecx
mov ecx, eax
imul eax, eax, 0x15
imul ecx, ecx, 0xb
mov ebp, edi
imul edi, edi, 0xb
imul ebp, ebp, 0x15
add ecx, ebp
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x2c], ebx
imul ebx, ebx, 0xb
imul ebp, ebp, 0x15
add ebx, ebp
and ebx, 0x1fe0
and ecx, 0x1fe000
or ecx, ebx
mov ebx, edx
imul ebx, ebx, 0xb
mov ebp, esi
imul ebp, ebp, 0x15
add ebx, ebp
and ebx, 0x1fe00000
or ecx, ebx
shr ecx, 5
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
add eax, edi
and eax, 0x1fe000
imul ecx, ecx, 0x15
mov edi, dword [esp + 0x10]
imul edx, edx, 0x15
imul esi, esi, 0xb
imul edi, edi, 0xb
add ecx, edi
mov edi, dword [esp + 0x18]
and ecx, 0x1fe0
or eax, ecx
mov ecx, dword [esp + 0x78]
add edx, esi
and edx, 0x1fe00000
or eax, edx
mov edx, dword [esp + 0x14]
shr eax, 5
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x24]
xor ebx, ebx
shr eax, 0x10
test edx, edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x2c], ebx
jle 0x109f3bc3
mov ebp, dword [esp + 0x28]
mov esi, dword [esp + 0x30]
mov edi, edi
mov edx, ebx
dec edx
je 0x109f3b5f
dec edx
jne 0x109f3b6d
mov eax, ebp
shr eax, 8
jmp 0x109f3b6d
mov eax, dword [esp + 0x24]
mov edx, ebp
shr eax, 0x1c
shl edx, 4
or eax, edx
xor edx, edx
test edi, edi
jle 0x109f3bab
cmp ecx, dword [esp + 0x34]
jae 0x109f3bfd
mov ebx, eax
and ebx, 7
mov ebx, dword [esp + ebx*4 + 0x54]
mov ebp, esi
and ebp, 3
or ebx, dword [esp + ebp*4 + 0x44]
shr esi, 2
shr eax, 3
mov dword [ecx], ebx
inc edx
add ecx, 4
cmp edx, edi
jl 0x109f3b73
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x28]
mov edx, dword [esp + 0x7c]
lea ecx, [ecx + edx*4]
mov edx, dword [esp + 0x14]
inc ebx
cmp ebx, edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x2c], ebx
jl 0x109f3b50
mov eax, dword [esp + 0x78]
mov esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x7c]
lea edi, [eax + edi*4]
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x40]
mov dword [esp + 0x78], edi
xor ebp, ebp
jmp 0x109f38a0
mov eax, dword [esp + 0x20]
lea edx, [ebx + ebx*2]
inc eax
lea edi, [edi + edx*4]
mov dword [esp + 0x20], eax
jmp 0x109f386f
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x64
ret