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

Disassembly:
sub esp, 0x10
push ebx
push ebp
push esi
mov esi, ecx
imul eax, esi
xor ebp, ebp
push edi
mov edi, 0x5ff0e0
xor ebx, ebx
add eax, edx
test edx, edx
mov ecx, edi
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x18], ebp
mov dword [esp + 0x14], ebx
je 0x4a0156
cmp eax, 1
jl 0x4a0156
mov ebp, dword [esp + 0x24]
mov ebx, eax
imul ebx, ebx, 0x124
add ebp, ebx
mov ebx, dword [ebp - 0x124]
cmp ebx, 3
je 0x4a0140
cmp ebx, 4
jne 0x4a0150
lea ebx, [ebp - 0xbc]
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x14], ebx
jmp 0x4a0156
mov ebx, dword [esp + 0x14]
mov ebp, ebx
cmp eax, esi
jl 0x4a0184
mov ebp, dword [esp + 0x24]
mov ebx, eax
sub ebx, esi
imul ebx, ebx, 0x124
add ebp, ebx
mov ebx, dword [ebp]
cmp ebx, 3
je 0x4a0177
cmp ebx, 4
jne 0x4a017c
add ebp, 0x68
jmp 0x4a0180
mov ebp, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
test edx, edx
je 0x4a01b7
lea edx, [esi + 1]
cmp eax, edx
jl 0x4a01b7
mov edx, eax
sub edx, esi
mov esi, dword [esp + 0x24]
imul edx, edx, 0x124
add esi, edx
mov edx, dword [esi - 0x124]
cmp edx, 3
je 0x4a01af
cmp edx, 4
jne 0x4a01b7
add esi, 0xffffff44
jmp 0x4a01bb
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
imul eax, eax, 0x124
add eax, edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x24], eax
add eax, 0x68
cmp edx, 5
ja case.default.0x4a01db
jmp dword [edx*4 + 0x4a0364]
test ebx, ebx
je 0x4a01e9
lea ecx, [ebx + 0x1e]
test ebp, ebp
je 0x4a01f0
lea edi, [ebp + 0x3c]
test esi, esi
je case.default.0x4a01db
add esi, 0x5a
jmp 0x4a025e
test ebp, ebp
mov ecx, eax
je case.default.0x4a01db
lea edi, [ebp + 0x5a]
add ebp, 0x3c
mov dword [esp + 0x10], ebp
jmp case.default.0x4a01db
test ebx, ebx
je 0x4a0219
lea ecx, [ebx + 0x5a]
add ebx, 0x1e
mov dword [esp + 0x10], ebx
mov edi, eax
jmp case.default.0x4a01db
lea ecx, [eax + 0x3c]
lea edi, [eax + 0x1e]
mov dword [esp + 0x10], eax
jmp case.default.0x4a01db
test ebx, ebx
je 0x4a0230
lea ecx, [ebx + 0x78]
test ebp, ebp
je 0x4a0237
lea edi, [ebp + 0x78]
test esi, esi
je case.default.0x4a01db
add esi, 0x78
jmp 0x4a025e
test ebx, ebx
je 0x4a024a
lea ecx, [ebx + 0x96]
test ebp, ebp
je 0x4a0254
lea edi, [ebp + 0x96]
test esi, esi
je case.default.0x4a01db
add esi, 0x96
mov dword [esp + 0x10], esi
movzx eax, word [ecx]
movsx ebx, ax
mov eax, dword [esp + 0x10]
movsx esi, word [eax]
movzx eax, word [edi]
movsx ebp, ax
mov eax, esi
sub eax, ebp
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x1c], eax
mov eax, ebx
sub eax, esi
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x1c]
cmp eax, edx
jge 0x4a02eb
movzx eax, word [edi]
test ax, ax
mov ecx, dword [esp + 0x2c]
jle 0x4a02a7
mov eax, ecx
sar eax, 1
add eax, ebp
jmp 0x4a02af
mov edx, ecx
sar edx, 1
mov eax, ebp
sub eax, edx
cdq
idiv ecx
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x28]
mov word [ecx], ax
mov eax, dword [esp + 0x24]
mov byte [eax + edx + 0x11c], 1
mov eax, dword [edi + 2]
mov edx, dword [edi + 6]
mov dword [ecx + 2], eax
mov eax, dword [edi + 0xa]
mov dword [ecx + 6], edx
mov dx, word [edi + 0xe]
pop edi
pop esi
pop ebp
mov dword [ecx + 0xa], eax
mov word [ecx + 0xe], dx
pop ebx
add esp, 0x10
ret
movzx eax, word [ecx]
test ax, ax
mov esi, dword [esp + 0x2c]
jle 0x4a02ff
mov eax, esi
sar eax, 1
add eax, ebx
jmp 0x4a0307
mov edx, esi
sar edx, 1
mov eax, ebx
sub eax, edx
cdq
idiv esi
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x28]
pop edi
mov word [edx], ax
mov eax, dword [esp + 0x20]
mov byte [eax + esi + 0x11c], 2
movzx eax, word [ecx + 0x10]
mov word [edx + 2], ax
movzx eax, word [ecx + 0x12]
mov word [edx + 4], ax
movzx eax, word [ecx + 0x14]
mov word [edx + 6], ax
movzx eax, word [ecx + 0x16]
mov word [edx + 8], ax
movzx eax, word [ecx + 0x18]
mov word [edx + 0xa], ax
movzx eax, word [ecx + 0x1a]
mov cx, word [ecx + 0x1c]
pop esi
pop ebp
mov word [edx + 0xc], ax
mov word [edx + 0xe], cx
pop ebx
add esp, 0x10
ret