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

Disassembly:
sub esp, 0x1c
push ebx
push esi
mov esi, dword [esp + 0x2c]
push edi
mov edi, dword [esi]
mov dword [esp + 0x10], edi
test edi, edi
jne 0x46f8c3
call fcn.004cd510
test eax, eax
jne 0x46f907
push eax
push 0x40
call fcn.004a73f0
mov edi, eax
mov dword [esp + 0x18], eax
add esp, 8
test edi, edi
je 0x46f907
push 0x40
push 0
push edi
call sub.MSVCRT.dll_memset
mov dword [esi], edi
add esp, 0xc
mov esi, dword [esp + 0x2c]
mov ebx, dword [esi + 0xe8]
call fcn.004cd510
test eax, eax
je 0x46f844
xor eax, eax
jmp 0x46f859
test ebx, ebx
jg 0x46f84c
xor eax, eax
jmp 0x46f859
mov eax, ebx
cdq
push edx
push eax
call fcn.004a73f0
add esp, 8
mov dword [edi + 0x30], eax
test eax, eax
je 0x46f907
mov eax, dword [esi + 0xe8]
mov dword [edi + 0x28], eax
lea eax, [esp + 0x30]
push 0
push eax
push 0xa
push esi
call fcn.00470f20
add esp, 0x10
test eax, eax
jne 0x46fb89
mov esi, dword [esp + 0x30]
push esi
call fcn.0044c6f0
add esp, 4
cmp eax, 0x64
jne 0x46f8b2
push 0
push esi
call fcn.0044cd60
mov dword [edi + 0x10], eax
add esp, 8
mov dword [edi + 8], eax
mov eax, edx
mov dword [edi + 0x14], edx
mov dword [edi + 0xc], eax
push esi
call fcn.0044d760
add esp, 4
test eax, eax
jne 0x46fb89
mov esi, dword [edi + 0x1c]
xor ebx, ebx
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x30], eax
test esi, esi
jle 0x46f8ed
mov edx, dword [edi + 0x18]
mov ecx, dword [esp + 0x38]
sub edx, ecx
lea esp, [esp]
mov al, byte [edx + ecx]
cmp al, byte [ecx]
jne 0x46f8ed
inc ebx
inc ecx
cmp ebx, esi
jl 0x46f8e0
mov esi, dword [esp + 0x3c]
sub esi, ebx
mov dword [esp + 0xc], esi
test esi, esi
jg 0x46f913
pop edi
pop esi
mov eax, 0x10b
pop ebx
add esp, 0x1c
ret
pop edi
pop esi
mov eax, 7
pop ebx
add esp, 0x1c
ret
mov eax, ebx
cdq
push ebp
mov ecx, eax
xor ebp, ebp
jmp 0x46f920
shrd ecx, edx, 7
inc ebp
shr edx, 7
mov eax, ecx
or eax, edx
jne 0x46f920
mov eax, esi
xor edi, edi
cdq
mov ecx, eax
mov eax, edx
mov dword [esp + 0x1c], ecx
mov esi, ecx
mov dword [esp + 0x18], eax
mov ecx, eax
shrd esi, ecx, 7
inc edi
shr ecx, 7
mov eax, esi
or eax, ecx
jne 0x46f943
mov eax, dword [esp + 0x48]
cdq
mov ecx, eax
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x14]
mov eax, edx
mov dword [esp + 0x24], ecx
mov esi, ecx
mov dword [esp + 0x20], eax
mov ecx, eax
xor edx, edx
shrd esi, ecx, 7
inc edx
shr ecx, 7
mov eax, esi
or eax, ecx
jne 0x46f970
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x34]
add esi, edx
add esi, ebp
add esi, dword [esp + 0x10]
add esi, dword [esp + 0x48]
test eax, eax
jle 0x46fa5d
mov ebp, dword [esp + 0x30]
add eax, esi
cmp eax, dword [ebp + 0xe8]
jle 0x46fa5d
mov esi, dword [edi + 0x10]
mov edx, dword [edi + 0x14]
cmp esi, 0xffffffff
jne 0x46f9cc
cmp edx, 0x7fffffff
jne 0x46f9cc
pop ebp
pop edi
pop esi
mov eax, 0x10b
pop ebx
add esp, 0x1c
ret
mov ecx, esi
mov eax, edx
add ecx, 1
mov dword [edi + 0x10], ecx
adc eax, 0
mov dword [edi + 0x14], eax
mov eax, dword [esp + 0x34]
push eax
push dword [edi + 0x30]
push edx
push esi
push ebp
call fcn.00472770
add esp, 0x14
test eax, eax
jne 0x46fb88
inc dword [ebp + 0x34]
lea eax, [ebx + 1]
push eax
push dword [esp + 0x40]
push dword [esp + 0x40]
push edi
push ebp
call fcn.0046bfb0
add esp, 0x14
test eax, eax
jne 0x46fb88
mov ebp, dword [esp + 0x40]
xor ebx, ebx
mov dword [esp + 0x34], eax
mov dword [edi + 0x1c], eax
mov eax, ebp
cdq
mov ecx, eax
mov dword [esp + 0x1c], eax
mov eax, edx
mov dword [esp + 0x10], ebp
push eax
push ecx
mov dword [esp + 0x20], eax
call fcn.0049fc70
push dword [esp + 0x28]
push dword [esp + 0x30]
lea esi, [eax + ebp]
call fcn.0049fc70
add eax, esi
add esp, 0x10
mov esi, dword [esp + 0x48]
inc esi
add esi, eax
jmp 0x46fa61
mov ebp, dword [esp + 0x40]
mov eax, esi
cdq
add dword [edi + 0x38], eax
adc dword [edi + 0x3c], edx
cmp esi, dword [edi + 0x28]
jle 0x46faa8
mov eax, dword [edi + 0x30]
mov dword [esp + 0x28], eax
call fcn.004cd510
test eax, eax
jne 0x46fb49
test esi, esi
sets al
dec eax
and eax, esi
cdq
push edx
push eax
push dword [esp + 0x30]
call fcn.004ae1d0
add esp, 0xc
test eax, eax
je 0x46fb49
mov dword [edi + 0x30], eax
mov dword [edi + 0x28], esi
mov esi, dword [esp + 0x34]
mov eax, ebx
cdq
push edx
push eax
mov eax, dword [edi + 0x30]
add eax, esi
push eax
call fcn.0049e400
push dword [esp + 0x24]
add esi, eax
mov eax, dword [edi + 0x30]
push dword [esp + 0x2c]
add eax, esi
push eax
call fcn.0049e400
add esi, eax
mov eax, dword [esp + 0x54]
add eax, ebx
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0x4c]
push esi
push eax
mov eax, dword [edi + 0x30]
add eax, ebx
push eax
call sub.MSVCRT.dll_memcpy
push dword [esp + 0x44]
mov eax, dword [edi + 0x30]
add ebx, esi
push dword [esp + 0x4c]
add eax, ebx
push eax
call fcn.0049e400
mov esi, dword [esp + 0x78]
add ebx, eax
mov eax, dword [edi + 0x30]
push esi
push dword [esp + 0x78]
add eax, ebx
push eax
call sub.MSVCRT.dll_memcpy
add esp, 0x3c
lea eax, [ebx + esi]
cmp dword [esp + 0x38], 0
mov dword [edi + 0x2c], eax
je 0x46fb7c
cmp ebp, dword [edi + 0x20]
jle 0x46fb5f
lea esi, [ebp*2]
push esi
push dword [edi + 0x24]
call fcn.004434b0
add esp, 8
test eax, eax
jne 0x46fb56
pop ebp
pop edi
pop esi
mov eax, 7
pop ebx
add esp, 0x1c
ret
mov dword [edi + 0x20], esi
mov dword [edi + 0x24], eax
mov dword [edi + 0x18], eax
push ebp
push dword [esp + 0x40]
push dword [edi + 0x18]
call sub.MSVCRT.dll_memcpy
add esp, 0xc
mov dword [edi + 0x1c], ebp
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x1c
ret
mov eax, dword [esp + 0x3c]
mov dword [edi + 0x18], eax
xor eax, eax
mov dword [edi + 0x1c], ebp
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x1c
ret