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

Disassembly:
sub esp, 0x78
push ebx
push ebp
push esi
push edi
mov edi, ecx
mov eax, dword [edi + 0x9c]
lea ebx, [eax + eax*2]
cdq
and edx, 7
add eax, edx
mov ecx, eax
mov eax, dword [edi + 0xa0]
cdq
and edx, 7
add eax, edx
sar ecx, 3
sar eax, 3
imul eax, ecx
lea esi, [eax + eax*2]
mov eax, dword [edi + 0xb94]
mov dword [esp + 0x10], edi
mov dword [esp + 0x74], 0
mov dword [esp + 0x28], ebx
mov dword [esp + 0x6c], ecx
test eax, eax
jne 0x417d13
cmp dword [edi + 0xb98], eax
jg 0x417d13
push esi
call fcn.004a04df
add esp, 4
jmp 0x417d33
mov ebp, dword [edi + 0xb98]
xor ecx, ecx
test ebp, ebp
setl cl
push esi
push eax
dec ecx
and ecx, ebp
mov dword [edi + 0xb98], ecx
call fcn.004a0275
add esp, 8
mov dword [edi + 0xb98], esi
mov dword [edi + 0xb94], eax
cmp dword [edi + 0xa0], 0
mov dword [esp + 0x84], eax
mov dword [esp + 0x64], 0
jle 0x418607
mov esi, dword [edi + 0x9c]
xor ebp, ebp
mov dword [esp + 0x68], ebp
test esi, esi
jle 0x4185f0
lea eax, [ebx*8]
lea ecx, [ebx + ebx*4]
sub eax, ebx
mov dword [esp + 0x78], ecx
mov dword [esp + 0x80], eax
jmp 0x417d90
mov edx, dword [edi + 0x68]
mov edi, dword [edi + 0xa0]
mov eax, dword [esp + 0x6c]
mov cl, byte [eax + edx]
add eax, edx
mov dl, byte [eax + 1]
mov al, byte [eax + 2]
mov byte [esp + 0x25], dl
mov byte [esp + 0x23], dl
add edi, 0xfffffff8
mov dword [esp + 0x7c], edi
mov edx, esi
imul edx, dword [esp + 0x64]
mov byte [esp + 0x24], cl
mov byte [esp + 0x26], cl
lea ecx, [esi + esi*2]
lea esi, [edx + ebp]
mov byte [esp + 0x27], al
mov byte [esp + 0x2f], al
lea eax, [esi + esi*2]
lea edi, [eax + ebx]
mov dword [esp + 0x40], edi
mov edi, eax
sub edi, ebx
mov dword [esp + 0x44], edi
mov edi, eax
lea ebp, [ebx + ebx]
sub edi, ebp
mov ebp, dword [esp + 0x68]
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0x10]
lea esi, [esi + esi*2 + 0x15]
add esi, dword [edi + 0x68]
lea edi, [edx + ebx]
add edi, ebp
lea edi, [edi + edi*2]
mov dword [esp + 0x3c], edi
mov edi, edx
sub edi, ebx
add edi, ebp
lea edi, [edi + edi*2]
mov dword [esp + 0x60], edi
mov edi, eax
lea ebp, [ebx*4]
sub edi, ebp
mov ebp, dword [esp + 0x78]
mov dword [esp + 0x5c], edi
lea edi, [eax + ebp]
mov dword [esp + 0x34], edi
mov edi, eax
sub edi, ebp
mov dword [esp + 0x54], edi
lea edi, [ebx + ebx]
sub edx, edi
add edx, dword [esp + 0x68]
mov edi, dword [esp + 0x80]
lea edx, [edx + edx*2]
mov dword [esp + 0x58], edx
lea edx, [edi + eax]
mov dword [esp + 0x38], edx
mov edx, eax
sub edx, edi
mov dword [esp + 0x4c], edx
lea edx, [ebx*8]
sub eax, edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x70], 8
jmp 0x417e84
mov ebx, dword [esp + 0x28]
mov eax, dword [esp + 0x44]
movzx edx, byte [esi - 0xf]
add eax, ebx
mov dword [esp + 0x6c], eax
movzx eax, byte [esi - 0x12]
add eax, edx
movzx edx, byte [esi - 0xc]
add eax, edx
movzx edx, byte [esi - 9]
add eax, edx
movzx edx, byte [esi - 6]
add eax, edx
movzx edx, byte [esi - 3]
add eax, edx
movzx edx, byte [esi + 3]
movzx edi, byte [esi - 0x11]
add eax, edx
movzx edx, byte [esi]
add eax, edx
movzx edx, byte [esi - 0xe]
add edi, edx
movzx edx, byte [esi - 0xb]
add edi, edx
movzx edx, byte [esi - 8]
add edi, edx
movzx edx, byte [esi - 5]
add edi, edx
movzx edx, byte [esi + 4]
movzx ebp, byte [esi - 0x10]
add edi, edx
movzx edx, byte [esi - 2]
add edi, edx
movzx edx, byte [esi + 1]
add edi, edx
movzx edx, byte [esi - 0xd]
add ebp, edx
movzx edx, byte [esi - 0xa]
add ebp, edx
movzx edx, byte [esi - 7]
add ebp, edx
movzx edx, byte [esi + 5]
add ebp, edx
movzx edx, byte [esi - 4]
add ebp, edx
movzx edx, byte [esi + 2]
add ebp, edx
movzx edx, byte [esi - 1]
add ebp, edx
mov edx, dword [esp + 0x7c]
cmp dword [esp + 0x64], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x1c], ebp
je 0x418044
mov ebx, dword [esp + 0x40]
movzx ebx, byte [ebx + edx]
add eax, ebx
mov ebx, dword [esp + 0x40]
movzx ebx, byte [ebx + edx + 1]
add edi, ebx
mov ebx, dword [esp + 0x40]
movzx ebx, byte [ebx + edx + 2]
add ebp, ebx
mov ebx, dword [esp + 0x40]
add ebx, edx
mov edx, dword [esp + 0x28]
add edx, ebx
movzx ebx, byte [edx]
add eax, ebx
movzx ebx, byte [edx + 1]
movzx edx, byte [edx + 2]
add edi, ebx
mov ebx, dword [esp + 0x3c]
add ebp, edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx ebx, byte [edx + ebx]
add eax, ebx
mov ebx, dword [esp + 0x3c]
movzx ebx, byte [edx + ebx + 1]
add edi, ebx
mov ebx, dword [esp + 0x3c]
movzx ebx, byte [edx + ebx + 2]
add ebp, ebx
mov ebx, dword [esp + 0x3c]
add edx, ebx
mov ebx, dword [esp + 0x28]
add edx, ebx
movzx ebx, byte [edx]
add eax, ebx
movzx ebx, byte [edx + 1]
movzx edx, byte [edx + 2]
add edi, ebx
mov ebx, dword [esp + 0x34]
add ebp, edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx ebx, byte [ebx + edx]
add eax, ebx
mov ebx, dword [esp + 0x34]
movzx ebx, byte [ebx + edx + 1]
add edi, ebx
mov ebx, dword [esp + 0x34]
movzx ebx, byte [ebx + edx + 2]
add ebp, ebx
mov ebx, dword [esp + 0x34]
add ebx, edx
mov edx, dword [esp + 0x28]
add edx, ebx
movzx ebx, byte [edx]
add eax, ebx
movzx ebx, byte [edx + 1]
movzx edx, byte [edx + 2]
add edi, ebx
mov ebx, dword [esp + 0x38]
add ebp, edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx ebx, byte [ebx + edx]
add eax, ebx
mov ebx, dword [esp + 0x38]
movzx ebx, byte [ebx + edx + 1]
add edi, ebx
mov ebx, dword [esp + 0x38]
movzx ebx, byte [ebx + edx + 2]
add ebp, ebx
mov ebx, dword [esp + 0x38]
add ebx, edx
mov edx, dword [esp + 0x28]
add edx, ebx
movzx ebx, byte [edx]
add eax, ebx
movzx ebx, byte [edx + 1]
movzx edx, byte [edx + 2]
add edi, ebx
jmp 0x418142
mov ebx, dword [esp + 0x44]
movzx ebx, byte [ebx + edx]
add eax, ebx
mov ebx, dword [esp + 0x44]
movzx ebx, byte [ebx + edx + 1]
add edi, ebx
mov ebx, dword [esp + 0x44]
movzx ebx, byte [ebx + edx + 2]
add ebp, ebx
mov ebx, dword [esp + 0x48]
movzx ebx, byte [edx + ebx]
add eax, ebx
mov ebx, dword [esp + 0x48]
movzx ebx, byte [edx + ebx + 1]
add edi, ebx
mov ebx, dword [esp + 0x48]
movzx ebx, byte [edx + ebx + 2]
add ebp, ebx
mov ebx, dword [esp + 0x60]
movzx ebx, byte [edx + ebx]
add eax, ebx
mov ebx, dword [esp + 0x60]
movzx ebx, byte [edx + ebx + 1]
add edi, ebx
mov ebx, dword [esp + 0x60]
movzx ebx, byte [edx + ebx + 2]
add ebp, ebx
mov ebx, dword [esp + 0x5c]
movzx ebx, byte [edx + ebx]
add eax, ebx
mov ebx, dword [esp + 0x5c]
movzx ebx, byte [edx + ebx + 1]
add edi, ebx
mov ebx, dword [esp + 0x5c]
movzx ebx, byte [edx + ebx + 2]
add ebp, ebx
mov ebx, dword [esp + 0x54]
movzx ebx, byte [ebx + edx]
add eax, ebx
mov ebx, dword [esp + 0x54]
movzx ebx, byte [ebx + edx + 1]
add edi, ebx
mov ebx, dword [esp + 0x54]
movzx ebx, byte [ebx + edx + 2]
add ebp, ebx
mov ebx, dword [esp + 0x58]
movzx ebx, byte [ebx + edx]
add eax, ebx
mov ebx, dword [esp + 0x58]
movzx ebx, byte [ebx + edx + 1]
add edi, ebx
mov ebx, dword [esp + 0x58]
movzx ebx, byte [ebx + edx + 2]
add ebp, ebx
mov ebx, dword [esp + 0x4c]
movzx ebx, byte [ebx + edx]
add eax, ebx
mov ebx, dword [esp + 0x4c]
movzx ebx, byte [ebx + edx + 1]
add edi, ebx
mov ebx, dword [esp + 0x4c]
movzx ebx, byte [ebx + edx + 2]
add ebp, ebx
mov ebx, dword [esp + 0x50]
movzx ebx, byte [ebx + edx]
add eax, ebx
mov ebx, dword [esp + 0x50]
movzx ebx, byte [ebx + edx + 1]
add edi, ebx
mov ebx, dword [esp + 0x50]
movzx edx, byte [ebx + edx + 2]
add ebp, edx
cmp dword [esp + 0x64], 0
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
je 0x4182e8
mov ebx, dword [esp + 0x44]
movzx edx, byte [ebx + edx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 2]
add dword [esp + 0x1c], edx
mov ebx, dword [esp + 0x48]
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [edx + ebx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [edx + ebx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [edx + ebx + 2]
add dword [esp + 0x1c], edx
mov ebx, dword [esp + 0x60]
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [edx + ebx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [edx + ebx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [edx + ebx + 2]
add dword [esp + 0x1c], edx
mov ebx, dword [esp + 0x5c]
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [edx + ebx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [edx + ebx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [edx + ebx + 2]
add dword [esp + 0x1c], edx
mov ebx, dword [esp + 0x54]
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 2]
add dword [esp + 0x1c], edx
mov ebx, dword [esp + 0x58]
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 2]
add dword [esp + 0x1c], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
mov ebx, dword [esp + 0x4c]
movzx edx, byte [ebx + edx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 2]
add dword [esp + 0x1c], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
mov ebx, dword [esp + 0x50]
movzx edx, byte [ebx + edx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 2]
jmp 0x418471
mov ebx, dword [esp + 0x40]
movzx edx, byte [ebx + edx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 2]
add dword [esp + 0x1c], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
add ebx, edx
mov edx, dword [esp + 0x28]
add edx, ebx
mov dword [esp + 0x30], edx
movzx edx, byte [edx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x30]
movzx edx, byte [edx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x30]
movzx edx, byte [edx + 2]
add dword [esp + 0x1c], edx
mov ebx, dword [esp + 0x3c]
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [edx + ebx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [edx + ebx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [edx + ebx + 2]
add dword [esp + 0x1c], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
add edx, ebx
mov ebx, dword [esp + 0x28]
add edx, ebx
mov dword [esp + 0x30], edx
movzx edx, byte [edx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x30]
movzx edx, byte [edx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x30]
movzx edx, byte [edx + 2]
add dword [esp + 0x1c], edx
mov ebx, dword [esp + 0x34]
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 2]
add dword [esp + 0x1c], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
add ebx, edx
mov edx, dword [esp + 0x28]
add edx, ebx
mov dword [esp + 0x30], edx
movzx edx, byte [edx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x30]
movzx edx, byte [edx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x30]
movzx edx, byte [edx + 2]
add dword [esp + 0x1c], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
mov ebx, dword [esp + 0x38]
movzx edx, byte [ebx + edx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
movzx edx, byte [ebx + edx + 2]
add dword [esp + 0x1c], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x68]
add ebx, edx
mov edx, dword [esp + 0x28]
add edx, ebx
mov dword [esp + 0x30], edx
movzx edx, byte [edx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x30]
movzx edx, byte [edx + 1]
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x30]
movzx edx, byte [edx + 2]
mov ebx, dword [esp + 0x1c]
add ebx, edx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
movzx edx, byte [esp + 0x24]
add eax, edx
cdq
sub eax, edx
sar eax, 1
mov byte [esp + 0x24], al
mov eax, edi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
movzx edx, byte [esp + 0x25]
add eax, edx
cdq
sub eax, edx
sar eax, 1
mov byte [esp + 0x25], al
mov eax, ebp
cdq
and edx, 0xf
add eax, edx
movzx edx, byte [esp + 0x27]
sar eax, 4
add eax, edx
cdq
sub eax, edx
sar eax, 1
mov byte [esp + 0x27], al
mov eax, dword [esp + 0x18]
cdq
and edx, 0xf
add eax, edx
movzx edx, byte [esp + 0x26]
sar eax, 4
add eax, edx
cdq
sub eax, edx
sar eax, 1
mov byte [esp + 0x26], al
mov eax, dword [esp + 0x14]
cdq
and edx, 0xf
add eax, edx
movzx edx, byte [esp + 0x23]
sar eax, 4
add eax, edx
cdq
sub eax, edx
sar eax, 1
add dword [esp + 0x44], ecx
add dword [esp + 0x48], ecx
add dword [esp + 0x60], ecx
add dword [esp + 0x5c], ecx
add dword [esp + 0x54], ecx
add dword [esp + 0x58], ecx
add dword [esp + 0x4c], ecx
add dword [esp + 0x50], ecx
add dword [esp + 0x40], ecx
add dword [esp + 0x3c], ecx
add dword [esp + 0x34], ecx
mov byte [esp + 0x23], al
mov eax, ebx
cdq
and edx, 0xf
add eax, edx
movzx edx, byte [esp + 0x2f]
sar eax, 4
add eax, edx
cdq
sub eax, edx
sar eax, 1
mov dl, al
add esi, ecx
add dword [esp + 0x38], ecx
mov byte [esp + 0x2f], dl
sub dword [esp + 0x70], 1
jne 0x417e80
movzx eax, byte [esp + 0x24]
movzx ecx, byte [esp + 0x26]
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x74]
mov ebp, dword [esp + 0x84]
sub ecx, eax
shl ecx, 0xa
mov ecx, dword [ecx + edi + 0x40df4]
shl eax, 8
add ecx, eax
movzx eax, byte [esp + 0x25]
sar ecx, 8
mov byte [esi + ebp], cl
movzx ecx, byte [esp + 0x23]
sub ecx, eax
shl ecx, 0xa
mov ecx, dword [ecx + edi + 0x40df4]
mov ebx, dword [esp + 0x28]
shl eax, 8
add ecx, eax
movzx eax, byte [esp + 0x27]
movzx edx, dl
sar ecx, 8
mov byte [esi + ebp + 1], cl
sub edx, eax
shl edx, 0xa
mov ecx, dword [edx + edi + 0x40df4]
shl eax, 8
add ecx, eax
sar ecx, 8
mov byte [esi + ebp + 2], cl
mov ebp, dword [esp + 0x68]
add esi, 3
add ebp, 8
mov dword [esp + 0x74], esi
mov esi, dword [edi + 0x9c]
cmp ebp, esi
mov dword [esp + 0x68], ebp
jl 0x417d90
mov eax, dword [esp + 0x64]
add eax, 8
cmp eax, dword [edi + 0xa0]
mov dword [esp + 0x64], eax
jl 0x417d61
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret