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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov ebx, dword [ecx + 0xc]
mov esi, ecx
mov dword [esp + 0x24], edx
mov ecx, ebx
inc ecx
je 0x46d6c9
mov edi, dword [esi + 4]
lea eax, [edi + 1]
mov dword [esp + 8], edi
mov edx, eax
mov ebp, eax
shr edx, 3
and ebp, 0xfffffff8
sub ebp, edx
cmp edi, 8
cmovb ebp, edi
mov edx, ebp
shr edx, 1
cmp ecx, edx
jbe 0x46d285
inc ebp
cmp ecx, ebp
cmova ebp, ecx
cmp ebp, 8
jae 0x46d2d8
xor eax, eax
cmp ebp, 4
setae al
lea eax, [eax*4 + 4]
jmp 0x46d4bd
mov edx, eax
mov edi, dword [esi]
xor ecx, ecx
shr edx, 4
test al, 0xf
setne cl
add ecx, edx
je 0x46d2b7
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 0x46d2a1
cmp eax, 0x10
jae 0x46d2f7
lea ecx, [edi + 0x10]
push eax
push edi
push ecx
call fcn.00462380
add esp, 0xc
cmp dword [esp + 8], 0xffffffff
jne 0x46d30b
xor eax, eax
jmp 0x46d48d
cmp ebp, 0x20000000
jae 0x46d6c9
shl ebp, 3
cmp ebp, 0xe
jae 0x46d49f
xor eax, eax
jmp 0x46d4bc
movq xmm0, qword [edi]
movq xmm1, qword [edi + 8]
movq qword [edi + eax + 8], xmm1
movq qword [edi + eax], xmm0
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 8]
lea eax, [edi - 0x20]
mov dword [esp + 0x14], ebp
mov ebp, edi
mov dword [esp + 0x10], esi
mov dword [esp + 0x18], eax
xor eax, eax
cmp byte [edi + eax], 0x80
jne 0x46d473
mov edx, dword [esp + 0x18]
mov ecx, eax
mov dword [esp + 4], eax
shl eax, 5
not ecx
shl ecx, 5
add ecx, edi
sub edx, eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x20]
push dword [eax]
push dword [esp + 0x78]
push dword [esp + 0x78]
call fcn.004151b6
add esp, 0xc
mov ecx, ebx
mov dword [esp], eax
and ecx, eax
movdqu xmm0, xmmword [edi + ecx]
mov eax, ecx
mov edx, eax
pmovmskb ecx, xmm0
test ecx, ecx
jne 0x46d3a7
mov esi, edi
mov edi, ebx
mov ebx, 0x10
mov edx, eax
add edx, ebx
add ebx, 0x10
and edx, edi
movdqu xmm0, xmmword [esi + edx]
pmovmskb ecx, xmm0
test ecx, ecx
je 0x46d38f
mov ebx, edi
mov edi, esi
bsf ecx, ecx
add ecx, edx
and ecx, ebx
cmp byte [edi + ecx], 0
js 0x46d3bf
movdqa xmm0, xmmword [edi]
pmovmskb ecx, xmm0
bsf ecx, ecx
mov edx, dword [esp + 4]
mov ebx, ecx
sub ebx, eax
sub edx, eax
xor ebx, edx
mov edx, dword [esp + 8]
and ebx, edx
cmp ebx, 0x10
jb 0x46d414
mov eax, dword [esp]
mov bl, byte [edi + ecx]
lea esi, [ecx - 0x10]
and esi, edx
shr eax, 0x19
cmp bl, 0xff
mov ebx, edx
mov byte [edi + ecx], al
mov byte [esi + edi + 0x10], al
je 0x46d42e
shl ecx, 5
mov eax, edi
sub eax, ecx
mov ecx, 0xffffffe0
mov dl, byte [ebp + ecx]
mov dh, byte [eax + ecx]
mov byte [ebp + ecx], dh
mov byte [eax + ecx], dl
inc ecx
jne 0x46d3fe
jmp 0x46d34e
mov eax, dword [esp + 4]
mov ebx, dword [esp]
lea ecx, [eax - 0x10]
shr ebx, 0x19
and ecx, edx
mov byte [edi + eax], bl
mov byte [ecx + edi + 0x10], bl
mov ebx, edx
jmp 0x46d473
mov esi, dword [esp + 4]
mov dl, 0xff
not ecx
shl ecx, 5
add ecx, edi
lea eax, [esi - 0x10]
mov byte [edi + esi], dl
and eax, ebx
mov byte [eax + edi + 0x10], dl
mov eax, esi
mov esi, dword [esp + 0x1c]
movsd xmm0, qword [esi + 0x18]
movsd qword [ecx + 0x18], xmm0
movsd xmm0, qword [esi + 0x10]
movsd qword [ecx + 0x10], xmm0
movq xmm0, qword [esi]
movq xmm1, qword [esi + 8]
movq qword [ecx + 8], xmm1
movq qword [ecx], xmm0
add ebp, 0xffffffe0
cmp eax, ebx
lea eax, [eax + 1]
jne 0x46d326
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
sub eax, ebx
mov dword [esi + 8], eax
mov eax, 0x80000001
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, 0x24924925
mov eax, ebp
mul ecx
sub ebp, edx
shr ebp, 1
add ebp, edx
shr ebp, 2
dec ebp
bsr ecx, ebp
xor eax, eax
dec eax
not ecx
shr eax, cl
inc eax
lea edi, [esp + 0x48]
mov edx, 0x20
mov ecx, edi
push eax
call fcn.00415e53
add esp, 4
mov edi, dword [edi]
test edi, edi
je 0x46d6c0
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x4c]
mov ebp, dword [esp + 0x50]
mov dword [esp + 4], eax
lea eax, [esi + 0x11]
push eax
push 0xff
push edi
call fcn.00462900
add esp, 0xc
mov eax, dword [esp + 4]
test ebx, ebx
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], ebp
mov dword [esp], esi
mov dword [esp + 0x28], ebp
mov dword [esp + 0xc], ebx
mov dword [esp + 0x44], eax
je 0x46d658
mov eax, dword [esp + 0x10]
mov esi, edi
mov ecx, dword [esp + 0xc]
xor ebx, ebx
mov dword [esp + 0x1c], esi
mov edi, dword [eax]
movdqa xmm0, xmmword [edi]
lea eax, [edi - 0x20]
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], eax
pmovmskb ebp, xmm0
not ebp
test bp, bp
mov dword [esp + 4], ecx
jne 0x46d571
movdqa xmm0, xmmword [edi + 0x10]
add edi, 0x10
add ebx, 0x10
pmovmskb ebp, xmm0
cmp ebp, 0xffff
je 0x46d558
not ebp
mov esi, dword [esp + 0x14]
bsf eax, ebp
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x6c]
add eax, ebx
mov dword [esp + 0x20], eax
shl eax, 5
sub esi, eax
push dword [esi]
push dword [esp + 0x78]
push dword [esp + 0x78]
call fcn.004151b6
add esp, 0xc
mov edx, dword [esp]
mov esi, dword [esp + 0x1c]
mov dword [esp + 8], eax
and edx, eax
movdqu xmm0, xmmword [esi + edx]
pmovmskb ecx, xmm0
test ecx, ecx
jne 0x46d5d5
mov eax, esi
mov esi, 0x10
add edx, esi
add esi, 0x10
and edx, dword [esp]
movdqu xmm0, xmmword [eax + edx]
pmovmskb ecx, xmm0
test ecx, ecx
je 0x46d5be
mov esi, eax
mov eax, dword [esp]
bsf ecx, ecx
add ecx, edx
and ecx, eax
cmp byte [esi + ecx], 0
js 0x46d5f0
movdqa xmm0, xmmword [esi]
pmovmskb ecx, xmm0
bsf ecx, ecx
mov eax, dword [esp + 8]
lea edx, [ecx - 0x10]
and edx, dword [esp]
shr eax, 0x19
mov byte [esi + ecx], al
mov byte [edx + esi + 0x10], al
lea eax, [ebp - 1]
mov edx, dword [esp + 0x18]
not ecx
and eax, ebp
mov ebp, dword [esp + 0x20]
shl ecx, 5
not ebp
shl ebp, 5
movsd xmm0, qword [edx + ebp + 0x18]
movsd qword [esi + ecx + 0x18], xmm0
movsd xmm0, qword [edx + ebp + 0x10]
movsd qword [esi + ecx + 0x10], xmm0
movq xmm0, qword [edx + ebp]
movq xmm1, qword [edx + ebp + 8]
mov ebp, eax
movq qword [esi + ecx + 8], xmm1
movq qword [esi + ecx], xmm0
mov ecx, dword [esp + 4]
dec ecx
test ecx, ecx
jne 0x46d54f
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x10]
sub ecx, eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x44], eax
mov eax, 0xfffffff0
mov ecx, dword [esi + eax + 0x10]
mov edx, dword [esp + eax + 0x48]
mov dword [esi + eax + 0x10], edx
mov dword [esp + eax + 0x48], ecx
add eax, 4
jne 0x46d673
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x46d492
mov eax, ecx
shl eax, 5
add ecx, eax
cmp ecx, 0xffffffcf
je 0x46d492
mov ecx, dword [esp + 0x38]
sub ecx, eax
push dword [ecx - 0x24]
push 0
push dword [0x48fd58]
call dword [sym.imp.kernel32.dll_HeapFree]
jmp 0x46d492
mov eax, dword [esp + 0x4c]
jmp 0x46d497
call fcn.00429a60