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

Disassembly:
sub esp, 0x64
mov eax, dword [esp + 0xb8]
push ebx
push ebp
push esi
push edi
or edi, 0xffffffff
test eax, eax
mov dword [esp + 0x10], 0
mov ecx, 1
jge 0x417bcc
neg eax
mov dword [esp + 0xc8], edi
lea edx, [eax - 1]
imul edx, dword [esp + 0xa8]
mov dword [esp + 0x10], edx
jmp 0x417bd3
mov dword [esp + 0xc8], ecx
mov esi, dword [esp + 0xcc]
test esi, esi
jge 0x417bfe
neg esi
mov dword [esp + 0xcc], edi
mov edi, dword [esp + 0x10]
lea edx, [esi - 1]
imul edx, dword [esp + 0xac]
add edi, edx
mov dword [esp + 0x10], edi
jmp 0x417c05
mov dword [esp + 0xcc], ecx
mov edx, dword [esp + 0x9c]
test edx, edx
jge 0x417c17
mov dword [esp + 0x9c], eax
mov ebx, dword [esp + 0xa0]
test ebx, ebx
jge 0x417c2b
mov ebx, esi
mov dword [esp + 0xa0], ebx
shl eax, 0x10
cdq
idiv dword [esp + 0x9c]
mov edi, eax
mov eax, esi
shl eax, 0x10
cdq
idiv ebx
test edi, 0xffff0000
mov ebp, eax
je 0x417c51
mov esi, edi
sar esi, 0x10
jmp 0x417c53
mov esi, ecx
test ebp, 0xffff0000
je 0x417c60
mov ecx, ebp
sar ecx, 0x10
mov ebx, ecx
mov eax, 0x10000
imul ebx, esi
cdq
idiv ebx
mov edx, dword [esp + 0xc8]
xor ebx, ebx
imul ecx, edx
imul edi, edx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0xb0]
mov edx, dword [esp + 0x84]
mov dword [esp + 0x68], edi
mov edi, dword [esp + 0x94]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xcc]
imul ebp, eax
imul esi, eax
mov eax, 1
mov dword [esp + 0x1c], esi
shl eax, cl
mov esi, dword [esp + 0x8c]
mov dword [esp + 0x70], ebp
dec eax
mov dword [esp + 0x38], eax
mov eax, 0x18
sub eax, edx
mov dword [esp + 0x60], eax
mov eax, 8
sub eax, ecx
mov ecx, dword [esp + 0xb8]
mov dword [esp + 0x5c], eax
mov eax, 1
shl eax, cl
dec eax
mov dword [esp + 0x3c], eax
mov eax, 0x18
sub eax, esi
mov dword [esp + 0x58], eax
mov eax, 8
sub eax, ecx
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x54], eax
mov eax, 1
shl eax, cl
mov dword [esp + 0xc0], ebx
dec eax
mov dword [esp + 0x40], eax
mov eax, 0x18
sub eax, edi
mov dword [esp + 0x50], eax
mov eax, 8
sub eax, ecx
mov ecx, edx
mov dword [esp + 0x4c], eax
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x88]
mov edx, 1
dec eax
shl eax, cl
mov ecx, esi
shl edx, cl
mov ecx, dword [esp + 0x90]
dec edx
shl edx, cl
mov ecx, edi
or eax, edx
mov edx, 1
shl edx, cl
mov ecx, dword [esp + 0x98]
dec edx
shl edx, cl
or eax, edx
not eax
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0xa0]
cmp eax, ebx
jle 0x418071
mov esi, dword [esp + 0x78]
mov edi, ebp
xor edx, edx
mov dword [esp + 0x28], esi
neg edi
mov dword [esp + 0x2c], edx
mov dword [esp + 0x6c], edi
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xc0]
cmp edx, ebx
jl 0x417dad
mov eax, edx
cmp ebp, ebx
je 0x417dbf
xor ecx, ecx
cmp ebp, ebx
setle cl
dec ecx
and ecx, 2
dec ecx
jmp 0x417dc1
xor ecx, ecx
sar eax, 0x10
imul eax, ecx
imul eax, dword [esp + 0xac]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x8c], ebx
add eax, ecx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x9c]
cmp eax, ebx
jle 0x41803f
mov dword [esp + 0xb8], esi
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0xb8]
mov dword [esp + 0xa0], ebx
mov ebx, ecx
lea edi, [esp + 0xa0]
xor ebp, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
xor ebx, ebx
and ecx, 3
xor edx, edx
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x1c]
xor eax, eax
cmp ecx, ebx
mov dword [esp + 0xb0], edx
mov dword [esp + 0x18], ebx
je 0x417f79
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0x84], ebx
imul ecx, dword [esp + 0xac]
mov dword [esp + 0x48], ecx
mov esi, dword [esp + 0x14]
mov dword [esp + 0x78], ebx
cmp esi, ebx
je 0x417f4c
mov ebx, dword [esp + 0x8c]
mov ecx, dword [esp + 0xc8]
imul ecx, dword [esp + 0xa8]
sar ebx, 0x10
imul ebx, dword [esp + 0xa8]
mov esi, dword [esp + 0x84]
mov edx, dword [esp + 0x34]
add ebx, esi
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0xa4]
add ebx, edx
add ebx, ecx
mov ecx, dword [esp + 0xa8]
mov esi, ebx
mov edx, ecx
lea edi, [esp + 0x94]
shr ecx, 2
mov dword [esp + 0x94], 0
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [esp + 0x94]
mov ecx, dword [esp + 0xb4]
mov edi, dword [esp + 0x38]
mov esi, edx
shr esi, cl
mov ecx, dword [esp + 0xbc]
and esi, edi
mov edi, dword [esp + 0x3c]
add ebp, esi
mov esi, edx
shr esi, cl
mov ecx, dword [esp + 0xb0]
and esi, edi
mov edi, dword [esp + 0xc8]
add ecx, esi
mov esi, dword [esp + 0x40]
mov dword [esp + 0xb0], ecx
mov ecx, dword [esp + 0xc4]
shr edx, cl
mov ecx, dword [esp + 0x78]
add ecx, edi
mov dword [esp + 0x78], ecx
and edx, esi
mov esi, dword [esp + 0x44]
add eax, edx
mov edx, dword [esp + 0x14]
add ebx, esi
cmp ecx, edx
jne 0x417ea7
mov edx, dword [esp + 0xb0]
mov ecx, dword [esp + 0x48]
xor ebx, ebx
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0xcc]
add esi, edi
mov edi, dword [esp + 0x84]
add edi, ecx
mov dword [esp + 0x18], esi
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x1c]
cmp esi, edi
jne 0x417e5a
mov ecx, dword [esp + 0x4c]
mov esi, dword [esp + 0x20]
shl eax, cl
mov ecx, dword [esp + 0x50]
imul eax, esi
shr eax, cl
mov ecx, dword [esp + 0x98]
shl eax, cl
mov ecx, dword [esp + 0x54]
shl edx, cl
mov ecx, dword [esp + 0x58]
imul edx, esi
shr edx, cl
mov ecx, dword [esp + 0x90]
shl edx, cl
mov ecx, dword [esp + 0x5c]
shl ebp, cl
mov ecx, dword [esp + 0x60]
or eax, edx
mov edx, dword [esp + 0x7c]
imul ebp, esi
shr ebp, cl
mov ecx, dword [esp + 0x88]
mov esi, dword [esp + 0x64]
shl ebp, cl
mov ecx, dword [esp + 0xa0]
and ecx, esi
lea esi, [esp + 0xa0]
or eax, ebp
or eax, ecx
mov ecx, edx
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0xb8]
mov ebp, ecx
mov edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
add eax, edx
mov edx, dword [esp + 0x68]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x24]
add ecx, edx
dec eax
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x24], eax
jne 0x417dfa
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x6c]
mov ebp, dword [esp + 0x70]
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0x80]
add eax, ebp
add esi, ecx
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0x30]
add edx, edi
dec eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], eax
jne 0x417da0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x64
ret