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

Disassembly:
sub esp, 0x30
mov eax, dword [esp + 0x3c]
push ebx
push ebp
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x40]
push esi
push edi
test ecx, ecx
jne 0x100813fe
cmp eax, 0x80000000
je 0x1008140e
cmp ecx, dword [esp + 0x50]
jne 0x1008140e
cmp eax, dword [esp + 0x54]
je 0x10081704
mov esi, dword [esp + 0x44]
mov ecx, dword [esi]
mov eax, dword [esi + 8]
and ecx, 1
mov edx, dword [esi + 4]
add eax, ecx
and edx, 1
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], eax
test al, 1
je 0x10081437
inc eax
mov dword [esp + 0x20], eax
mov ecx, dword [esi + 0xc]
add ecx, edx
mov dword [esp + 0x24], ecx
test cl, 1
je 0x1008144a
inc ecx
mov dword [esp + 0x24], ecx
lea ebp, [eax + 0xf]
and ebp, 0xfffffff0
mov edi, ebp
mov dword [esp + 0x3c], ebp
imul edi, ecx
shl edi, 2
push edi
call dword [sym.imp.ole32.dll_CoTaskMemAlloc]
mov ecx, eax
mov dword [esp + 0x34], ecx
test ecx, ecx
je 0x10081704
mov ebx, dword [esi + 0x14]
mov eax, dword [esi + 0x18]
push edi
push 0
push ecx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x1c], eax
call fcn.10092930
mov edi, dword [esp + 0x40]
mov eax, ebp
imul eax, dword [esp + 0x20]
add esp, 0xc
add eax, dword [esp + 0x18]
lea ecx, [edi + eax*4]
xor eax, eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], eax
cmp dword [esi + 0xc], eax
jle 0x1008156f
lea edx, [ebp*4]
mov dword [esp + 0x38], edx
jmp 0x100814c0
xor edi, edi
cmp dword [esi + 8], edi
jle 0x10081550
lea ebp, [ecx + 2]
mov edi, edi
movzx eax, byte [edi + ebx]
cmp eax, dword [esi + 0x10]
jge 0x1008153b
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x10]
mov bl, byte [edx + eax*4 + 2]
mov ch, byte [edx + eax*4 + 3]
mov cl, byte [edx + eax*4 + 1]
movzx eax, byte [esi + eax*4]
movzx edx, ch
imul eax, edx
mov esi, dword [esp + 0x44]
sub eax, 0xffffff80
imul eax, eax, 0x101
sar eax, 0x10
mov byte [ebp - 2], al
movzx eax, cl
imul eax, edx
sub eax, 0xffffff80
imul eax, eax, 0x101
sar eax, 0x10
mov byte [ebp - 1], al
movzx eax, bl
mov ebx, dword [esp + 0x28]
imul eax, edx
sub eax, 0xffffff80
imul eax, eax, 0x101
sar eax, 0x10
mov byte [ebp], al
mov byte [ebp + 1], ch
inc edi
add ebp, 4
cmp edi, dword [esi + 8]
jl 0x100814d0
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x38]
add ebx, dword [esi + 0x34]
inc eax
add ecx, edx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], eax
cmp eax, dword [esi + 0xc]
jl 0x100814c0
mov edi, dword [esp + 0x34]
mov eax, dword [esi]
sub eax, dword [esp + 0x18]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 4]
sub eax, dword [esp + 0x14]
push 0x48
mov dword [esp + 0x34], eax
call fcn.1008c1c4
add esp, 4
test eax, eax
je 0x10081704
mov ecx, eax
call fcn.10080480
mov ebp, eax
mov dword [esp + 0x44], ebp
test ebp, ebp
je 0x10081704
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x34]
mov ecx, dword [ebx + 0x60]
mov dword [ebp + 0x18], ecx
mov ecx, dword [ebx + 0x64]
mov dword [ebp + 0x1c], ecx
add dword [ebx + 0x60], 1
mov ecx, dword [esp + 0x3c]
adc dword [ebx + 0x64], 0
mov dword [ebp + 0x20], eax
mov eax, dword [esp + 0x30]
mov dword [ebp + 0x24], eax
mov eax, dword [esp + 0x20]
mov dword [ebp + 0x28], eax
mov eax, dword [esp + 0x24]
mov dword [ebp + 0x2c], eax
mov eax, dword [esp + 0x48]
mov dword [ebp + 8], eax
mov eax, dword [esp + 0x4c]
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 0x50]
mov dword [ebp + 0x10], eax
mov eax, dword [esp + 0x54]
mov dword [ebp + 0x14], eax
mov dword [ebp + 0x38], ecx
mov dword [ebp + 0x30], edi
mov al, byte [esi + 0x60]
and al, 1
mov byte [ebp + 0x3c], al
mov eax, dword [ebx + 0x4c]
cmp dword [eax + 0x30], 0x17000
jne 0x100816b5
mov eax, dword [ebp + 0x2c]
imul eax, ecx
push eax
call dword [sym.imp.ole32.dll_CoTaskMemAlloc]
mov edi, eax
mov dword [ebp + 0x34], edi
test edi, edi
je 0x10081704
mov edx, dword [esi + 0x10]
xor ebx, ebx
xor ecx, ecx
test edx, edx
jle 0x10081660
mov eax, dword [esp + 0x10]
add eax, 3
lea esp, [esp]
cmp byte [eax], bl
je 0x1008165e
inc ecx
add eax, 4
cmp ecx, edx
jl 0x10081650
jmp 0x10081660
mov ebx, ecx
mov eax, dword [ebp + 0x38]
imul eax, dword [ebp + 0x2c]
push eax
push ebx
push edi
call fcn.10092930
mov edi, dword [ebp + 0x38]
add esp, 0xc
imul edi, dword [esp + 0x14]
mov ebx, dword [esi + 0x14]
add edi, dword [ebp + 0x34]
xor ebp, ebp
add edi, dword [esp + 0x18]
cmp dword [esi + 0xc], ebp
jle 0x100816ad
jmp 0x10081690
push dword [esi + 8]
push ebx
push edi
call fcn.100922e0
mov eax, dword [esp + 0x50]
inc ebp
add ebx, dword [esi + 0x34]
add esp, 0xc
add edi, dword [eax + 0x38]
cmp ebp, dword [esi + 0xc]
jl 0x10081690
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x44]
mov ecx, dword [ebx + 0x4c]
mov edx, dword [esp + 0x34]
add edx, dword [esp + 0x20]
cmp dword [ecx + 0x78], edx
cmovg edx, dword [ecx + 0x78]
mov dword [ecx + 0x78], edx
mov ecx, dword [ebx + 0x4c]
mov edx, dword [esp + 0x30]
add edx, dword [esp + 0x24]
cmp dword [ecx + 0x7c], edx
cmovg edx, dword [ecx + 0x7c]
mov dword [ecx + 0x7c], edx
mov eax, dword [ebx + 0x4c]
mov ecx, dword [eax + 0x7c]
cmp ecx, 0x1e0
jle 0x100816fc
cmp ecx, 0x240
jge 0x100816fc
mov dword [eax + 0x7c], 0x240
push ebp
mov ecx, ebx
call fcn.10081710
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret 0x14