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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov edi, ecx
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x20], edx
mov dword [esp + 0x10], ecx
inc ecx
je 0x470d10
mov ebx, dword [edi + 4]
lea eax, [ebx + 1]
mov edx, eax
mov esi, eax
shr edx, 3
and esi, 0xfffffff8
sub esi, edx
cmp ebx, 8
cmovb esi, ebx
mov edx, esi
shr edx, 1
cmp ecx, edx
jbe 0x4708f5
inc esi
cmp ecx, esi
cmova esi, ecx
cmp esi, 8
jae 0x47094a
xor eax, eax
cmp esi, 4
setae al
lea eax, [eax*4 + 4]
jmp 0x470b0e
mov edx, eax
mov dword [esp + 0xc], edi
mov edi, dword [edi]
xor ecx, ecx
shr edx, 4
test al, 0xf
setne cl
add ecx, edx
je 0x47092b
movdqa xmm0, xmmword [0x473070]
mov edx, edi
pxor xmm1, xmm1
dec ecx
pcmpgtb xmm1, xmmword [edx]
por xmm1, xmm0
movdqa xmmword [edx], xmm1
lea edx, [edx + 0x10]
jne 0x470915
cmp eax, 0x10
jae 0x470969
lea ecx, [edi + 0x10]
push eax
push edi
push ecx
call fcn.00462380
add esp, 0xc
cmp ebx, 0xffffffff
jne 0x47097d
xor ecx, ecx
jmp 0x470ad8
cmp esi, 0x20000000
jae 0x470d10
shl esi, 3
cmp esi, 0xe
jae 0x470af0
xor eax, eax
jmp 0x470b0d
movq xmm0, qword [edi]
movq xmm1, qword [edi + 8]
movq qword [edi + eax + 8], xmm1
movq qword [edi + eax], xmm0
mov dword [esp + 0x14], esi
lea eax, [edi - 0x24]
xor esi, esi
mov ebp, edi
mov dword [esp + 0x18], eax
cmp byte [edi + esi], 0x80
jne 0x470ac6
mov eax, esi
mov ecx, dword [esp + 0x18]
mov dword [esp + 8], esi
not eax
lea eax, [eax + eax*8]
lea eax, [edi + eax*4]
mov dword [esp + 0x1c], eax
mov eax, esi
neg eax
lea eax, [eax + eax*8]
lea eax, [ecx + eax*4]
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x6c]
push dword [esp + 4]
push dword [esp + 0x78]
push dword [esp + 0x78]
call fcn.0044019c
add esp, 0xc
mov ecx, ebx
mov dword [esp], eax
mov esi, edi
and ecx, eax
movdqu xmm0, xmmword [edi + ecx]
mov eax, ecx
pmovmskb edx, xmm0
test edx, edx
jne 0x470a0d
mov edi, ebx
mov ebx, 0x10
mov ecx, eax
add ecx, ebx
add ebx, 0x10
and ecx, edi
movdqu xmm0, xmmword [esi + ecx]
pmovmskb edx, xmm0
test edx, edx
je 0x4709f7
mov ebx, edi
bsf edx, edx
mov edi, ebx
add edx, ecx
and edx, ebx
cmp byte [esi + edx], 0
js 0x470a27
movdqa xmm0, xmmword [esi]
pmovmskb ecx, xmm0
bsf edx, ecx
mov ecx, dword [esp + 8]
mov ebx, edx
sub ebx, eax
sub ecx, eax
xor ebx, ecx
mov ecx, edi
and ebx, edi
cmp ebx, 0x10
jb 0x470a7f
mov eax, dword [esp]
mov bl, byte [esi + edx]
mov edi, esi
lea esi, [edx - 0x10]
and esi, ecx
shr eax, 0x19
cmp bl, 0xff
mov ebx, ecx
mov byte [edi + edx], al
mov byte [esi + edi + 0x10], al
je 0x470a9d
shl edx, 2
mov eax, edi
lea ecx, [edx + edx*8]
sub eax, ecx
mov ecx, 0xffffffdc
mov dl, byte [ebp + ecx]
mov dh, byte [eax + ecx]
mov byte [ebp + ecx], dh
mov byte [eax + ecx], dl
inc ecx
jne 0x470a69
jmp 0x4709ba
mov eax, dword [esp + 8]
mov ebx, dword [esp]
mov edi, esi
lea edx, [eax - 0x10]
shr ebx, 0x19
mov esi, eax
and edx, ecx
mov byte [edi + eax], bl
mov byte [edx + edi + 0x10], bl
mov ebx, ecx
jmp 0x470ac6
mov esi, dword [esp + 8]
not edx
lea eax, [edx + edx*8]
mov dl, 0xff
lea eax, [edi + eax*4]
lea ecx, [esi - 0x10]
mov byte [edi + esi], dl
and ecx, ebx
mov byte [ecx + edi + 0x10], dl
push 0x24
push dword [esp + 0x20]
push eax
call fcn.00462380
add esp, 0xc
add ebp, 0xffffffdc
cmp esi, ebx
lea esi, [esi + 1]
jne 0x47098c
mov ecx, dword [esp + 0x14]
sub ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
mov dword [eax + 8], ecx
mov eax, 0x80000001
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, 0x24924925
mov eax, esi
mul ecx
sub esi, edx
shr esi, 1
add esi, edx
shr esi, 2
dec esi
bsr ecx, esi
xor eax, eax
dec eax
not ecx
shr eax, cl
inc eax
lea esi, [esp + 0x48]
mov edx, 0x24
mov ecx, esi
push eax
call fcn.00415e53
add esp, 4
mov eax, dword [esi]
test eax, eax
je 0x470c9e
mov esi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x54]
mov ebx, dword [esp + 0x50]
mov ebp, eax
lea eax, [esi + 0x11]
mov dword [esp + 4], ecx
push eax
push 0xff
push ebp
call fcn.00462900
add esp, 0xc
mov eax, dword [esp + 4]
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], ebx
mov dword [esp + 8], ebp
mov dword [esp], esi
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x10]
test eax, eax
je 0x470ca7
mov dword [esp + 0xc], edi
mov edi, dword [edi]
mov dword [esp + 0x24], ebx
xor ebx, ebx
mov dword [esp + 4], eax
movdqa xmm0, xmmword [edi]
lea ecx, [edi - 0x24]
mov dword [esp + 0x14], edi
mov dword [esp + 0x28], ecx
pmovmskb esi, xmm0
not esi
test si, si
jne 0x470bba
movdqa xmm0, xmmword [edi + 0x10]
add edi, 0x10
add ebx, 0x10
pmovmskb esi, xmm0
cmp esi, 0xffff
je 0x470ba1
not esi
bsf eax, esi
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x6c]
add eax, ebx
mov dword [esp + 0x1c], eax
neg eax
lea eax, [eax + eax*8]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x20]
push eax
push dword [esp + 0x78]
push dword [esp + 0x78]
call fcn.0044019c
add esp, 0xc
mov ebp, dword [esp]
mov dword [esp + 0x18], eax
mov ecx, ebp
and ecx, eax
mov eax, dword [esp + 8]
movdqu xmm0, xmmword [eax + ecx]
pmovmskb edx, xmm0
test edx, edx
jne 0x470c21
mov ebp, 0x10
add ecx, ebp
add ebp, 0x10
and ecx, dword [esp]
movdqu xmm0, xmmword [eax + ecx]
pmovmskb edx, xmm0
test edx, edx
je 0x470c09
mov ebp, dword [esp]
bsf edx, edx
add edx, ecx
and edx, ebp
cmp byte [eax + edx], 0
js 0x470c39
movdqa xmm0, xmmword [eax]
pmovmskb ecx, xmm0
bsf edx, ecx
lea ecx, [edx - 0x10]
mov ebp, eax
mov eax, dword [esp + 0x18]
and ecx, dword [esp]
shr eax, 0x19
mov byte [ebp + edx], al
mov byte [ecx + ebp + 0x10], al
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
lea ebp, [esi - 1]
not edx
and ebp, esi
mov esi, dword [esp + 4]
not eax
lea eax, [eax + eax*8]
dec esi
lea eax, [ecx + eax*4]
lea ecx, [edx + edx*8]
mov edx, dword [esp + 8]
lea ecx, [edx + ecx*4]
push 0x24
push eax
push ecx
call fcn.00462380
add esp, 0xc
mov dword [esp + 4], esi
test esi, esi
mov esi, ebp
jne 0x470b9c
mov edi, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x24]
jmp 0x470ca9
mov eax, dword [esp + 0x4c]
jmp 0x470ae8
xor eax, eax
sub ebx, eax
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], eax
mov eax, 0xfffffff0
mov ecx, dword [edi + eax + 0x10]
mov edx, dword [esp + eax + 0x48]
mov dword [edi + eax + 0x10], edx
mov dword [esp + eax + 0x48], ecx
add eax, 4
jne 0x470cb8
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x470ae3
lea eax, [ecx + 1]
mov edx, 0x24
mul edx
add eax, 0xf
and eax, 0xfffffff0
add ecx, eax
cmp ecx, 0xffffffef
je 0x470ae3
mov ecx, dword [esp + 0x38]
sub ecx, eax
push dword [ecx - 4]
push 0
push dword [0x48fd58]
call dword [sym.imp.kernel32.dll_HeapFree]
jmp 0x470ae3
call fcn.00429a60