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

Disassembly:
mov ecx, dword [esp + 8]
sub esp, 0x48
push ebx
mov ebx, dword [esp + 0x50]
mov eax, dword [ebx]
push ebp
mov ebp, dword [eax + 0x140]
push esi
mov esi, dword [ebx + 0xe0]
imul esi, esi, 0x2c
add esi, ebp
cmp esi, ecx
push edi
mov dl, 1
jne 0x4040ae
mov byte [ebx + 0x10a], dl
mov esi, dword [esp + 0x68]
mov byte [ebx + 0x10b], dl
cmp byte [esi], 0
jns 0x4040c9
mov edi, dword [eax + 0x104]
mov dword [esp + 0x5c], edi
jmp 0x4040d5
mov dword [esp + 0x5c], 0
mov edi, dword [esp + 0x5c]
lea eax, [edi + 2]
mov dword [esp + 0x14], eax
mov al, byte [esp + 0x70]
test al, al
je 0x4040ff
lea edx, [esp + 0x70]
push edx
mov edx, dword [esp + 0x70]
lea eax, [esp + 0x1c]
push eax
push edx
push esi
push ecx
call fcn.00404390
add esp, 0x14
jmp 0x404119
lea eax, [esp + 0x70]
push eax
mov eax, dword [esp + 0x70]
lea edx, [esp + 0x1c]
push edx
push eax
push esi
push ecx
push edi
call fcn.004042c0
add esp, 0x18
test eax, eax
jne 0x404128
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x48
ret
movzx bp, byte [esi]
movzx cx, byte [esi + 1]
shl ebp, 8
add ebp, ecx
and ebp, 0x7fff
mov ecx, edi
neg ecx
sbb ecx, ecx
and ecx, 0x8000
mov dword [esp + 0x1c], ecx
sub ecx, esi
add ecx, eax
mov eax, dword [esp + 0x70]
and ecx, 0xffff
mov byte [esi + 1], cl
shr ecx, 8
test edi, edi
mov byte [esi], cl
mov dword [esp + 0x10], eax
je 0x40418f
mov ecx, edi
mov edx, ecx
mov esi, eax
sub esi, edi
mov edi, dword [ebx + 0xa0]
add edi, 2
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x5c]
mov eax, dword [esp + 0x60]
push eax
push ebx
call fcn.0040e020
mov ecx, eax
and ecx, edx
add esp, 8
cmp ecx, 0xffffffff
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
jne 0x4041b8
pop edi
pop esi
pop ebp
or eax, ecx
pop ebx
add esp, 0x48
ret
mov ecx, dword [esp + 0x60]
push edx
mov edx, dword [esp + 0x70]
push eax
mov eax, dword [esp + 0x6c]
push edx
push eax
push ecx
call fcn.00410500
add esp, 0xc
push eax
push ebx
call fcn.0040ea70
mov edx, dword [esp + 0x7c]
push edx
lea eax, [esp + 0x24]
push eax
mov eax, dword [esp + 0x78]
push edi
push eax
call dword [eax + 0x20]
add esp, 0x20
test eax, eax
jne 0x4041fd
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x48
ret
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x60]
lea ecx, [esp + 0x28]
push ecx
push edx
push 0
push 0
push 0
push edi
push eax
call dword [eax + 0x24]
mov edx, dword [esp + 0x2c]
mov edi, dword [ebx + 0xa0]
sub ebp, edx
add ebp, esi
mov esi, edx
add edi, eax
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x30]
mov ecx, ebp
mov edx, ecx
shr ecx, 2
add edi, eax
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [ebx + 0xa0]
mov esi, dword [esp + 0x7c]
lea ecx, [esp + 0x44]
push ecx
add edx, eax
push edx
push esi
call dword [esi + 0x28]
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x44]
mov edx, dword [ebx + 0xa0]
add eax, ecx
add eax, dword [esp + 0x94]
add eax, ebp
and eax, 0xffff
mov byte [edx + 1], al
mov ecx, dword [ebx + 0xa0]
shr eax, 8
mov byte [ecx], al
mov edx, dword [ebx + 0xa0]
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
push edx
push eax
push ecx
push esi
push ebx
call fcn.0040de50
add esp, 0x3c
neg eax
pop edi
sbb eax, eax
pop esi
and eax, 0xfffffffd
pop ebp
add eax, 2
pop ebx
add esp, 0x48
ret