Function at 0x1046b9d0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x54
mov edx, dword [esp + 0x68]
mov eax, 0x20
cmp edx, eax
mov ecx, eax
push ebp
cmovl ecx, edx
xorps xmm0, xmm0
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x70]
cmp ecx, eax
movlpd qword [esp + 0x50], xmm0
cmovl eax, ecx
xor ebp, ebp
mov dword [esp + 0x30], eax
mov dword [esp + 0x44], ebp
test ecx, ecx
jle 0x1046bce2
push esi
mov esi, dword [esp + 0x58]
push edi
mov edi, dword [esp + 0x58]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], edi
push ebx
xor eax, eax
mov dword [esp + 0x4c], eax
test edx, edx
jle 0x1046bcbe
mov edx, dword [esp + 0x78]
mov ecx, ebp
sar ecx, 5
mov ebx, ebp
imul ecx, dword [esp + 0x84]
imul ebx, dword [esp + 0x74]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x74]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x6c]
add ebx, dword [esp + 0x70]
imul ebp, ecx
mov dword [esp + 0x14], ebx
add ebp, dword [esp + 0x68]
mov dword [esp + 0x28], ebp
nop dword [eax]
mov ebx, dword [esp + 0x80]
sar eax, 5
add eax, dword [esp + 0x54]
cmp byte [eax + ebx], 0
mov ebx, dword [esp + 0x14]
je 0x1046bc8a
mov eax, dword [esp + 0x34]
mov esi, eax
cmp dword [esp + 0x58], eax
mov eax, dword [esp + 0x38]
mov edi, eax
cmovl esi, dword [esp + 0x58]
cmp dword [esp + 0x3c], eax
mov dword [esp + 0x5c], esi
cmovl edi, dword [esp + 0x3c]
mov dword [esp + 0x40], edi
cmp esi, 0x20
jne 0x1046bada
cmp edi, esi
jne 0x1046bada
push edx
push ebx
push ecx
push ebp
call dword [0x10b49524]
mov edi, dword [esp + 0x30]
add esp, 0x10
mov esi, dword [esp + 0x24]
add edi, eax
adc esi, 0
jmp 0x1046bc7a
xor ecx, ecx
mov dword [esp + 0x18], ecx
test edi, edi
jle 0x1046bc6b
mov eax, dword [esp + 0x28]
xorps xmm3, xmm3
mov edx, dword [esp + 0x14]
xorps xmm2, xmm2
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebp
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], edx
nop
xor ecx, ecx
test esi, esi
jle 0x1046bb61
cmp esi, 0x20
jb 0x1046bb61
mov eax, esi
and eax, 0x8000001f
jns 0x1046bb29
dec eax
or eax, 0xffffffe0
inc eax
mov edx, esi
sub edx, eax
nop dword [eax]
movups xmm0, xmmword [ecx + ebp]
movups xmm1, xmmword [ebx + ecx]
psadbw xmm1, xmm0
movups xmm0, xmmword [ecx + ebp + 0x10]
paddd xmm3, xmm1
movups xmm1, xmmword [ebx + ecx + 0x10]
add ecx, 0x20
psadbw xmm1, xmm0
paddd xmm2, xmm1
cmp ecx, edx
jl 0x1046bb30
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
xor edi, edi
xor ebx, ebx
cmp ecx, esi
jge 0x1046bc02
mov eax, esi
sub eax, ecx
cmp eax, 2
jl 0x1046bbc0
lea ebp, [esi - 1]
mov esi, dword [esp + 0x1c]
nop dword [eax]
movzx edx, byte [ecx + edx]
movzx eax, byte [ecx + esi]
sub edx, eax
mov eax, edx
cdq
xor eax, edx
sub eax, edx
add edi, eax
mov eax, dword [esp + 0x10]
movzx edx, byte [ecx + eax + 1]
movzx eax, byte [ecx + esi + 1]
add ecx, 2
sub edx, eax
mov eax, edx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x10]
add ebx, eax
cmp ecx, ebp
jl 0x1046bb80
mov esi, dword [esp + 0x5c]
cmp ecx, esi
jge 0x1046bbe7
nop
mov eax, dword [esp + 0x2c]
add eax, dword [esp + 0x28]
movzx edx, byte [eax + ecx]
mov eax, dword [esp + 0x30]
add eax, dword [esp + 0x14]
movzx eax, byte [eax + ecx]
mov ecx, dword [esp + 0x18]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
add ecx, eax
jmp 0x1046bbeb
mov ecx, dword [esp + 0x18]
mov ebp, dword [esp + 0x48]
lea eax, [ebx + edi]
mov edx, dword [esp + 0x10]
add ecx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], ecx
jmp 0x1046bc06
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x6c]
add dword [esp + 0x2c], edi
mov ebx, dword [esp + 0x74]
add dword [esp + 0x30], ebx
sub dword [esp + 0x40], 1
mov ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x74]
lea ebx, [edi + ebx]
mov edi, dword [esp + 0x6c]
mov dword [esp + 0x44], ebx
lea ebp, [edi + ebp]
lea eax, [eax + edi]
mov dword [esp + 0x48], ebp
mov edi, dword [esp + 0x74]
mov dword [esp + 0x1c], eax
lea edx, [edx + edi]
mov dword [esp + 0x10], edx
jne 0x1046bb10
mov ebp, dword [esp + 0x28]
paddd xmm2, xmm3
mov ebx, dword [esp + 0x14]
movaps xmm0, xmm2
psrldq xmm0, 8
paddd xmm2, xmm0
movd eax, xmm2
add ecx, eax
mov edi, dword [esp + 0x20]
mov eax, ecx
mov esi, dword [esp + 0x24]
cdq
add edi, eax
adc esi, edx
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x24], esi
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0x4c]
add ebp, 0x20
sub dword [esp + 0x34], 0x20
add eax, 0x20
add ebx, 0x20
mov dword [esp + 0x4c], eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x14], ebx
cmp eax, dword [esp + 0x78]
jl 0x1046ba70
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x78]
mov ebp, dword [esp + 0x50]
add ebp, 0x20
sub ecx, 0x20
mov dword [esp + 0x50], ebp
mov dword [esp + 0x38], ecx
cmp ebp, dword [esp + 0x7c]
jl 0x1046ba23
pop ebx
mov eax, edi
mov edx, esi
pop edi
pop esi
pop ebp
add esp, 0x54
ret
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
pop ebp
add esp, 0x54
ret