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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x48
mov eax, dword [esp + 0xa0]
mov edi, dword [esp + 0x5c]
mov esi, dword [edi + 0x48]
mov ebx, dword [esi + 4]
mov dword [esp + 0x44], ebx
test eax, eax
je 0x40a112
cmp dword [esi + 0x34], 0
jne 0x40a112
mov dword [edi + 0x1c], 3
jmp 0x40a5b3
movzx ecx, word [esp + 0x6c]
movzx edx, word [esp + 0x64]
movzx ecx, cx
movzx ebp, word [esp + 0x74]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edx
add ecx, edx
add ecx, ebp
xor edx, edx
add ecx, dword [esp + 0xac]
setb dl
add ecx, ebx
adc edx, 0
add ecx, 0x2e
adc edx, 0
cmp ecx, 0xffffffff
sbb edx, 0
jb 0x40a15b
mov dword [edi + 0x1c], 0xf
jmp 0x40a5b3
mov dword [esp + 0x34], ebp
mov dword [esp], ebx
mov ebp, dword [esp + 0x84]
mov edi, dword [esp + 0x7c]
mov dword [esp + 0xa], 0
mov dword [esp + 0xe], 0
mov dword [esp + 0x12], 0
mov dword [esp + 0x16], 0
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov dword [esp + 0x22], 0
mov dword [esp + 0x26], 0
mov word [esp + 0x2a], 0
mov dword [esp + 6], 0x2014b50
mov ebx, dword [esp + 0x88]
movzx ecx, word [esp + 0x6c]
mov edx, dword [esp + 0xac]
add ecx, edx
mov dword [esp + 0x40], ecx
xor ecx, ecx
mov edx, 0
cmp word [esp + 0x8c], 0
je 0x40a1e9
mov dl, 0x14
mov byte [esp + 0xc], dl
movzx edx, word [esp + 0x90]
mov byte [esp + 0xe], dl
mov byte [esp + 0xf], dh
movzx edx, word [esp + 0x8c]
mov byte [esp + 0x10], dl
mov byte [esp + 0x11], dh
movzx edx, word [esp + 0x94]
mov byte [esp + 0x12], dl
mov byte [esp + 0x13], dh
movzx edx, word [esp + 0x98]
mov byte [esp + 0x14], dl
mov byte [esp + 0x15], dh
mov byte [esp + 0x16], bl
mov byte [esp + 0x17], bh
mov edx, ebx
shr edx, 0x10
mov byte [esp + 0x18], dl
shr ebx, 0x18
neg ebp
mov edx, 0
sbb edx, edx
mov byte [esp + 0x19], bl
or edx, dword [esp + 0x80]
mov byte [esp + 0x1a], dl
mov byte [esp + 0x1b], dh
mov ebx, edx
shr ebx, 0x10
mov byte [esp + 0x1c], bl
shr edx, 0x18
neg edi
mov ebx, 0
sbb ebx, ebx
mov byte [esp + 0x1d], dl
or ebx, dword [esp + 0x78]
mov byte [esp + 0x1e], bl
mov byte [esp + 0x1f], bh
mov edx, ebx
shr edx, 0x10
mov byte [esp + 0x20], dl
shr ebx, 0x18
mov byte [esp + 0x21], bl
movzx edx, word [esp + 0x64]
mov byte [esp + 0x22], dl
mov byte [esp + 0x23], dh
mov edx, dword [esp + 0x40]
mov byte [esp + 0x24], dl
mov byte [esp + 0x25], dh
movzx edx, word [esp + 0x74]
mov byte [esp + 0x26], dl
mov byte [esp + 0x27], dh
mov ebx, dword [esp + 0xa4]
mov byte [esp + 0x2c], bl
mov byte [esp + 0x2d], bh
mov edx, ebx
shr edx, 0x10
mov byte [esp + 0x2e], dl
shr ebx, 0x18
neg eax
sbb ecx, ecx
mov byte [esp + 0x2f], bl
or ecx, dword [esp + 0x9c]
mov byte [esp + 0x30], cl
mov byte [esp + 0x31], ch
mov eax, ecx
shr eax, 0x10
mov byte [esp + 0x32], al
shr ecx, 0x18
mov byte [esp + 0x33], cl
mov ebx, dword [esp]
mov eax, ebx
and eax, 0x2e
mov ecx, ebx
xor ecx, 0x2e
lea edi, [ecx + eax*2]
mov eax, dword [esi + 8]
cmp eax, edi
jae 0x40a34d
cmp eax, 1
adc eax, 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, eax
add eax, eax
cmp ebx, edi
jb 0x40a320
push ebx
push dword [esi + 0xc]
push dword [esi]
mov eax, dword [esp + 0x68]
push dword [eax + 0x34]
call dword [eax + 0x30]
add esp, 0x10
test eax, eax
je 0x40a585
mov dword [esi], eax
mov dword [esi + 8], ebx
mov ebx, dword [esp]
jmp 0x40a34f
mov eax, dword [esi]
mov dword [esi + 4], edi
mov ecx, dword [esi + 0xc]
imul edx, ecx, 0x2e
imul ecx, ebx
add ecx, eax
lea eax, [esp + 6]
push edx
push eax
push ecx
call fcn.0040c730
add esp, 0xc
mov ebx, dword [esi + 4]
mov edi, dword [esi + 8]
mov eax, ebx
mov edx, dword [esp + 0x3c]
and eax, edx
mov ecx, ebx
xor ecx, edx
lea ebp, [ecx + eax*2]
cmp edi, ebp
jae 0x40a3b8
cmp edi, 1
adc edi, 0
mov eax, edi
nop
nop
nop
mov edi, eax
add eax, eax
cmp edi, ebp
jb 0x40a390
push edi
push dword [esi + 0xc]
push dword [esi]
mov eax, dword [esp + 0x68]
push dword [eax + 0x34]
call dword [eax + 0x30]
add esp, 0x10
test eax, eax
je 0x40a585
mov dword [esi], eax
mov dword [esi + 8], edi
mov dword [esi + 4], ebp
cmp word [esp + 0x64], 0
je 0x40a3e6
mov eax, dword [esi + 0xc]
mov ecx, dword [esp + 0x3c]
imul ecx, eax
imul ebx, eax
add ebx, dword [esi]
push ecx
push dword [esp + 0x64]
push ebx
call fcn.0040c730
add esp, 0xc
mov ebp, dword [esi + 4]
mov edi, dword [esi + 8]
mov eax, ebp
mov edx, dword [esp + 0x38]
and eax, edx
mov ecx, ebp
xor ecx, edx
lea ebx, [ecx + eax*2]
cmp edi, ebx
jae 0x40a438
cmp edi, 1
adc edi, 0
mov eax, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, eax
add eax, eax
cmp edi, ebx
jb 0x40a410
push edi
push dword [esi + 0xc]
push dword [esi]
mov eax, dword [esp + 0x68]
push dword [eax + 0x34]
call dword [eax + 0x30]
add esp, 0x10
test eax, eax
je 0x40a585
mov dword [esi], eax
mov dword [esi + 8], edi
mov dword [esi + 4], ebx
movzx eax, word [esp + 0x6c]
test ax, ax
je 0x40a468
mov eax, dword [esi + 0xc]
mov ecx, dword [esp + 0x38]
imul ecx, eax
imul ebp, eax
add ebp, dword [esi]
push ecx
push dword [esp + 0x6c]
push ebp
call fcn.0040c730
add esp, 0xc
mov ebx, dword [esi + 4]
mov edi, dword [esi + 8]
mov eax, ebx
mov edx, dword [esp + 0xac]
and eax, edx
mov ecx, ebx
xor ecx, edx
lea ebp, [ecx + eax*2]
cmp edi, ebp
jae 0x40a4b8
cmp edi, 1
adc edi, 0
mov eax, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, eax
add eax, eax
cmp edi, ebp
jb 0x40a490
push edi
push dword [esi + 0xc]
push dword [esi]
mov eax, dword [esp + 0x68]
push dword [eax + 0x34]
call dword [eax + 0x30]
add esp, 0x10
test eax, eax
je 0x40a585
mov dword [esi], eax
mov dword [esi + 8], edi
mov dword [esi + 4], ebp
mov ecx, dword [esp + 0xac]
test ecx, ecx
je 0x40a4e8
mov eax, dword [esi + 0xc]
imul ecx, eax
imul ebx, eax
add ebx, dword [esi]
push ecx
push dword [esp + 0xac]
push ebx
call fcn.0040c730
add esp, 0xc
mov ebp, dword [esi + 4]
mov edi, dword [esi + 8]
mov eax, ebp
mov edx, dword [esp + 0x34]
and eax, edx
mov ecx, ebp
xor ecx, edx
lea ebx, [ecx + eax*2]
cmp edi, ebx
jae 0x40a510
mov ecx, dword [esp + 0x5c]
mov edx, esi
push 1
push ebx
call fcn.0040c600
add esp, 8
test eax, eax
je 0x40a585
mov dword [esi + 4], ebx
cmp word [esp + 0x74], 0
je 0x40a538
mov eax, dword [esi + 0xc]
mov ecx, dword [esp + 0x34]
imul ecx, eax
imul ebp, eax
add ebp, dword [esi]
push ecx
push dword [esp + 0x74]
push ebp
call fcn.0040c730
add esp, 0xc
mov edi, dword [esi + 0x14]
mov eax, edi
and eax, 1
mov ecx, edi
xor ecx, 1
lea ebx, [ecx + eax*2]
cmp dword [esi + 0x18], ebx
jae 0x40a563
lea edx, [esi + 0x10]
mov ecx, dword [esp + 0x5c]
push 1
push ebx
call fcn.0040c600
add esp, 8
test eax, eax
je 0x40a585
mov dword [esi + 0x14], ebx
mov eax, dword [esi + 0x1c]
imul edi, eax
add edi, dword [esi + 0x10]
lea ecx, [esp + 0x44]
push eax
push ecx
push edi
call fcn.0040c730
add esp, 0xc
mov eax, 1
jmp 0x40a5b5
mov ebx, dword [esp]
cmp dword [esi + 8], ebx
mov edi, dword [esp + 0x5c]
jae 0x40a5a9
push ebx
push dword [esi + 0xc]
push dword [esi]
push dword [edi + 0x34]
call dword [edi + 0x30]
add esp, 0x10
test eax, eax
je 0x40a5ac
mov dword [esi], eax
mov dword [esi + 8], ebx
mov dword [esi + 4], ebx
mov dword [edi + 0x1c], 0x10
xor eax, eax
add esp, 0x48
pop esi
pop edi
pop ebx
pop ebp
ret