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

Disassembly:
sub esp, 0x34
push ebx
push ebp
mov ebp, dword [esp + 0x48]
mov ebx, edx
imul eax, ebp, 0x18
push esi
mov dword [esp + 0x2c], ecx
push edi
mov dword [esp + 0x18], ebx
mov esi, dword [eax + ebx - 0x18]
add esi, dword [eax + ebx - 0x10]
mov ecx, dword [eax + ebx - 0x14]
adc ecx, dword [eax + ebx - 0xc]
xor edx, edx
mov dword [esp + 0x34], esi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x2c], edx
test ebp, ebp
je 0xfff9562a
mov edi, dword [esp + 0x54]
lea esi, [ebx + 8]
mov ebx, ebp
mov dword [esp + 0x28], ebx
mov eax, dword [esi - 8]
mov ebp, dword [esi]
mov ecx, dword [esi + 4]
mov dword [esp + 0x14], eax
mov eax, dword [esi - 4]
mov dword [esp + 0x1c], eax
mov eax, ebp
or eax, ecx
mov dword [esp + 0x3c], ecx
je 0xfff95616
mov eax, edx
lea ebx, [edi + 0x18]
shl eax, 5
mov edi, ecx
add ebx, eax
push dword [esp + 0x4c]
push dword [esp + 0x4c]
push dword [esp + 0x24]
push dword [esp + 0x20]
call fcn.fff94956
mov ecx, eax
mov dword [esp + 0x48], edx
add esp, 0x10
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], edx
cmp edx, edi
jb 0xfff955a5
ja 0xfff95594
cmp ecx, ebp
jbe 0xfff955a5
push edi
push ebp
call fcn.fff97881
pop ecx
pop ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x2c]
mov ecx, dword [eax]
shr ecx, 5
cmp edx, ecx
mov ecx, dword [esp + 0x24]
jae 0xfff955ec
mov eax, dword [esp + 0x14]
mov dword [ebx - 0x18], eax
mov eax, dword [esp + 0x1c]
mov dword [ebx - 0x14], eax
mov eax, dword [esp + 0x3c]
mov dword [ebx - 0x10], eax
mov eax, dword [esp + 0x38]
mov dword [ebx - 0xc], eax
mov eax, dword [esi + 8]
xor eax, dword [ebx]
and eax, 0x7f
mov dword [ebx - 4], ecx
xor dword [ebx], eax
mov eax, dword [esp + 0x20]
mov dword [ebx - 8], eax
jmp 0xfff955f0
mov eax, dword [esp + 0x20]
add dword [esp + 0x14], eax
adc dword [esp + 0x1c], ecx
sub ebp, eax
mov eax, ebp
sbb edi, ecx
inc edx
add ebx, 0x20
mov dword [esp + 0x2c], edx
or eax, edi
jne 0xfff95560
mov edi, dword [esp + 0x54]
mov ebx, dword [esp + 0x28]
add esi, 0x18
sub ebx, 1
mov dword [esp + 0x28], ebx
jne 0xfff95533
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x58]
lea edi, [edx + 1]
lea eax, [edi + 0x20]
imul eax, edi
cmp dword [ecx], eax
jae 0xfff95647
mov dword [ecx], eax
mov eax, 0x80000005
jmp 0xfff95a00
mov edx, dword [esp + 0x54]
mov ebp, edi
mov eax, dword [esp + 0x40]
shl ebp, 5
add ebp, edx
mov dword [esp + 0x20], ebp
mov dword [ebp - 0x20], esi
xor esi, esi
mov dword [ebp - 0x1c], eax
test edi, edi
je 0xfff956b4
mov eax, ebp
mov dword [esp + 0x58], ebp
lea ebx, [esi + 1]
test ebx, ebx
je 0xfff9567f
push 0
push ebx
push eax
call fcn.fff93dc0
add esp, 0xc
mov eax, edi
sub eax, esi
sub eax, 1
je 0xfff956a0
push 0xff
push eax
lea eax, [edi + 1]
imul eax, esi
inc eax
add eax, ebp
push eax
call fcn.fff93dc0
add esp, 0xc
mov eax, dword [esp + 0x58]
mov esi, ebx
add eax, edi
mov dword [esp + 0x58], eax
cmp esi, edi
jb 0xfff9566c
mov edx, dword [esp + 0x54]
lea eax, [edi - 1]
xor ecx, ecx
test eax, eax
je 0xfff95704
lea eax, [edx + 0x18]
lea esi, [edi + ebp]
mov dword [esp + 0x58], eax
lea ebx, [ebp + 1]
mov edx, eax
lea ebp, [edi - 1]
mov eax, dword [edx]
shl eax, 0x19
sar eax, 0x19
cmp eax, dword [esp + 0x30]
je 0xfff956e6
mov byte [ebx], 1
mov byte [esi + ecx], 0
jmp 0xfff956ed
mov byte [ebx], 0
mov byte [esi + ecx], 1
lea eax, [edi + 1]
inc ecx
add esi, edi
add edx, 0x20
add ebx, eax
cmp ecx, ebp
jb 0xfff956cf
mov ebp, dword [esp + 0x20]
mov edx, dword [esp + 0x54]
mov bl, 2
mov byte [esp + 0x58], bl
test edi, edi
je 0xfff9584f
and dword [esp + 0x2c], 0
push 2
pop esi
movzx ecx, si
movzx eax, si
mov dword [esp + 0x28], eax
cmp ecx, edi
jae 0xfff95838
mov eax, dword [esp + 0x2c]
shl eax, 5
mov dword [esp + 0x3c], eax
mov ebp, dword [eax + edx]
mov eax, dword [eax + edx + 4]
mov dword [esp + 0x34], eax
mov eax, ecx
shl eax, 5
mov dword [esp + 0x38], ebp
mov ebp, dword [eax + edx]
sub ebp, dword [esp + 0x38]
mov dword [esp + 0x1c], ebp
mov ebp, dword [eax + edx + 4]
mov eax, dword [esp + 0x3c]
sbb ebp, dword [esp + 0x34]
mov dword [esp + 0x24], ebp
cmp ebp, dword [eax + edx + 0xc]
mov ebp, dword [esp + 0x20]
ja 0xfff95838
jb 0xfff95788
mov ebp, dword [esp + 0x1c]
cmp ebp, dword [eax + edx + 8]
mov ebp, dword [esp + 0x20]
ja 0xfff95838
mov eax, dword [esp + 0x2c]
imul eax, edi
add eax, ecx
cmp byte [eax + ebp], 0xff
jne 0xfff95820
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
add ecx, 0xffffffff
adc eax, 0xffffffff
and ecx, dword [esp + 0x1c]
and eax, dword [esp + 0x24]
or ecx, eax
jne 0xfff95820
mov edx, dword [esp + 0x50]
lea eax, [esp + 0x14]
mov ecx, dword [esp + 0x18]
push eax
push dword [esp + 0x28]
push dword [esp + 0x24]
push dword [esp + 0x40]
push dword [esp + 0x48]
call fcn.fff94cf2
add esp, 0x14
cmp al, bl
jne 0xfff95817
xor eax, eax
mov edx, dword [esp + 0x18]
push eax
push eax
push eax
push dword [esp + 0x64]
mov ecx, dword [esp + 0x40]
lea eax, [esi - 2]
push dword [esp + 0x24]
push dword [esp + 0x3c]
push eax
push ebp
push dword [esp + 0x74]
push edi
push dword [esp + 0x78]
push dword [esp + 0x78]
push dword [esp + 0x78]
call fcn.fff94fe1
add esp, 0x34
jmp 0xfff9581c
cmp bl, 2
je 0xfff95838
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x28]
inc eax
movzx ecx, ax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x3c]
cmp ecx, edi
jb 0xfff95737
mov edx, dword [esp + 0x54]
inc esi
lea eax, [esi - 2]
movzx eax, ax
mov dword [esp + 0x2c], eax
cmp eax, edi
jb 0xfff9571a
mov edx, dword [esp + 0x54]
inc bl
mov byte [esp + 0x58], bl
cmp bl, 3
jbe 0xfff9570a
xor ebx, ebx
lea esi, [edi - 1]
push ebx
push esi
push ebx
push ebp
mov ecx, edi
call fcn.fff94df9
movzx eax, si
add esp, 0x10
mov dword [esp + 0x34], eax
test ax, ax
je 0xfff959fe
mov esi, dword [esp + 0x54]
movzx eax, ax
mov ecx, eax
mov dword [esp + 0x3c], eax
shl ecx, 5
mov dword [esp + 0x24], ecx
mov byte [esp + 0x58], 0xff
mov byte [esp + 0x14], 0
movzx eax, word [ecx + esi + 0x1e]
movzx edx, ax
mov dword [esp + 0x38], eax
mov eax, edx
imul eax, edi
mov dword [esp + 0x28], edx
add eax, dword [esp + 0x3c]
cmp byte [eax + ebp], 0
je 0xfff9595b
mov ebx, dword [ecx + esi]
lea ebp, [esp + 0x14]
mov eax, edx
shl eax, 5
push ebp
mov edx, dword [eax + esi]
sub ebx, edx
mov eax, dword [eax + esi + 4]
mov dword [esp + 0x58], eax
mov eax, dword [ecx + esi + 4]
mov ecx, dword [esp + 0x58]
sbb eax, ecx
push eax
push ebx
push ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x3c], edx
push edx
mov edx, dword [esp + 0x64]
mov dword [esp + 0x54], eax
call fcn.fff94cf2
mov cl, byte [esp + 0x28]
add esp, 0x14
mov ebp, dword [esp + 0x20]
mov byte [esp + 0x58], al
mov al, 7
jmp 0xfff9591a
dec al
add cl, cl
test cl, cl
jg 0xfff95916
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
cmp dword [ecx], edx
je 0xfff959f9
movsx eax, al
mov edx, ecx
mov ecx, dword [esp + 0x5c]
push eax
push dword [esp + 0x44]
push ebx
push dword [esp + 0x60]
push dword [esp + 0x3c]
call fcn.fff94fa7
mov ebx, eax
add esp, 0x14
test ebx, ebx
js 0xfff959fe
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x3c]
dec ecx
cmp edx, ecx
je 0xfff959e3
cmp byte [esp + 0x58], 0xff
jne 0xfff959a2
lea eax, [esp + 0x14]
shl edx, 5
push eax
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + esi]
sub ecx, dword [edx + esi]
mov eax, dword [eax + esi + 4]
sbb eax, dword [edx + esi + 4]
push eax
push ecx
push dword [edx + esi + 4]
mov ecx, dword [esp + 0x28]
push dword [edx + esi]
mov edx, dword [esp + 0x64]
call fcn.fff94cf2
add esp, 0x14
mov byte [esp + 0x58], al
push dword [esp + 0x64]
mov edx, dword [esp + 0x1c]
push dword [esp + 0x64]
mov ecx, dword [esp + 0x38]
push dword [esp + 0x64]
push dword [esp + 0x64]
push dword [esp + 0x24]
push dword [esp + 0x48]
push dword [esp + 0x50]
push ebp
push esi
push edi
push dword [esp + 0x78]
push dword [esp + 0x78]
push dword [esp + 0x78]
call fcn.fff94fe1
mov ebx, eax
add esp, 0x34
test ebx, ebx
js 0xfff959fe
mov ecx, dword [esp + 0x38]
movzx eax, cx
mov dword [esp + 0x34], eax
test cx, cx
jne 0xfff95889
jmp 0xfff959fe
mov ebx, 0x80000009
mov eax, ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret