Function at 0x730780
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x34
mov ebp, dword [esp + 0x50]
mov edx, dword [esp + 0x48]
mov edi, dword [edx + 8]
mov ebx, dword [edx + 0xc]
mov eax, dword [edx + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [edx + 0x10]
mov dword [esp + 0x18], eax
mov eax, dword [edx + 0x1c]
mov dword [esp + 0x10], eax
mov eax, dword [edx + 0x18]
mov dword [esp], eax
mov esi, dword [edx + 0x24]
mov eax, dword [edx + 0x20]
mov dword [esp + 8], eax
add dword [edx], ebp
adc dword [edx + 4], 0
mov ecx, dword [esp + 0x4c]
mov eax, dword [edx + 0x28]
test eax, eax
mov dword [esp + 4], edi
mov edi, ebp
je 0x730933
mov ebp, 8
sub ebp, eax
add eax, edx
add eax, 0x38
sub edi, ebp
mov dword [esp + 0x20], edi
mov edi, edx
jae 0x730802
mov esi, dword [esp + 0x50]
push esi
push ecx
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
add dword [edi + 0x28], esi
jmp 0x730c8d
mov dword [esp + 0xc], ebx
mov dword [esp + 0x1c], ebp
push ebp
push ecx
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov edx, dword [edi + 0x30]
mov ecx, dword [edi + 0x38]
mov eax, dword [edi + 0x3c]
mov dword [esp + 0x2c], eax
xor esi, eax
mov dword [esp + 0x24], ecx
xor dword [esp + 8], ecx
test edx, edx
je 0x7308e1
mov ebp, dword [esp + 4]
mov edi, dword [esp]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x18]
nop word cs:[eax + eax]
add ebp, edx
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
adc ecx, ebx
mov dword [esp + 0xc], ecx
mov eax, edx
shld eax, ebx, 0xd
shld ebx, edx, 0xd
xor ebx, ecx
xor eax, ebp
mov edx, dword [esp + 8]
add edi, edx
adc dword [esp + 0x10], esi
mov ecx, edx
shld ecx, esi, 0x10
shld esi, edx, 0x10
xor esi, dword [esp + 0x10]
xor ecx, edi
mov edx, dword [esp + 0xc]
add edx, ecx
mov dword [esp], edx
adc ebp, esi
mov edx, ecx
shld edx, esi, 0x15
shrd ecx, esi, 0xb
mov dword [esp + 0xc], ebp
xor ecx, ebp
xor edx, dword [esp]
mov dword [esp + 8], edx
mov ebp, edi
add ebp, eax
mov edi, dword [esp + 0x10]
adc edi, ebx
mov edx, eax
shld edx, ebx, 0x11
shrd eax, ebx, 0xf
xor eax, edi
xor edx, ebp
mov esi, ecx
mov dword [esp + 0x28], ebp
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], eax
mov ebp, dword [esp]
mov ebx, ebp
dec dword [esp + 0x30]
jne 0x730850
jmp 0x7308fa
mov ebx, dword [esp + 4]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x28], ecx
mov ecx, esi
mov edi, dword [esp]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x18], edx
mov dword [esp], edi
mov edi, dword [esp + 0x4c]
add edi, dword [esp + 0x1c]
mov edx, ebx
xor edx, dword [esp + 0x24]
mov ebx, dword [esp + 0xc]
xor ebx, dword [esp + 0x2c]
mov dword [esp + 4], edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x10], eax
mov esi, ecx
mov ecx, edi
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x20]
mov eax, edi
and eax, 7
mov dword [esp + 0x20], edi
add edi, ecx
mov dword [esp + 0x24], eax
sub edi, eax
cmp ecx, edi
mov dword [esp + 0x1c], edi
je 0x730a54
mov edx, dword [edx + 0x30]
mov dword [esp + 0x2c], edx
test edx, edx
mov ebp, dword [esp + 0x18]
je 0x730a65
mov edi, dword [esp + 4]
mov edx, dword [esp + 8]
nop dword [eax + eax]
mov eax, dword [ecx]
mov dword [esp + 0x30], ecx
mov ecx, dword [ecx + 4]
mov dword [esp + 0x18], ecx
xor esi, ecx
mov dword [esp + 0x20], eax
xor edx, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x10]
mov eax, dword [esp]
nop word cs:[eax + eax]
mov dword [esp + 8], edx
add edi, ebp
mov dword [esp + 0xc], edi
mov edi, dword [esp + 0x14]
adc ebx, edi
mov edx, ebp
shld ebp, edi, 0xd
shld edi, edx, 0xd
xor edi, ebx
mov dword [esp + 0x14], edi
mov edx, dword [esp + 0xc]
xor ebp, edx
mov edi, dword [esp + 8]
add eax, edi
mov dword [esp], eax
mov eax, ecx
adc eax, esi
mov ecx, edi
shld edi, esi, 0x10
shld esi, ecx, 0x10
xor esi, eax
xor edi, dword [esp]
add ebx, edi
mov dword [esp + 4], ebx
mov ecx, edx
adc ecx, esi
mov dword [esp + 0xc], ecx
mov edx, edi
shld edx, esi, 0x15
shld esi, edi, 0x15
xor esi, ecx
xor edx, ebx
mov ecx, dword [esp]
mov edi, dword [esp + 0x14]
add ecx, ebp
adc eax, edi
mov ebx, ebp
shld ebx, edi, 0x11
shld edi, ebp, 0x11
mov ebp, ebx
xor edi, eax
mov dword [esp + 0x14], edi
mov edi, dword [esp + 4]
mov ebx, dword [esp + 0xc]
xor ebp, ecx
dec dword [esp + 0x28]
jne 0x7309a0
mov dword [esp], eax
mov dword [esp + 0x10], ecx
xor edi, dword [esp + 0x20]
xor ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x30]
add ecx, 8
cmp ecx, dword [esp + 0x1c]
jne 0x730970
jmp 0x730c2a
mov edi, dword [esp + 4]
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 8]
jmp 0x730c2a
mov edx, dword [esp + 0x20]
add edx, 0xfffffff8
cmp edx, 0xf
jbe 0x730c00
mov eax, edx
shr eax, 3
mov edi, ebx
mov ebp, ecx
xor ecx, ecx
test dl, 8
sete cl
or ecx, 0xfffffffe
lea ebx, [eax + ecx]
lea edx, [eax + ecx]
inc edx
movd xmm0, dword [esp + 8]
movd xmm1, esi
movd xmm2, dword [esp + 4]
lea ecx, [ebp + ebx*8 + 8]
punpckldq xmm0, xmm1
movq xmm1, xmm0
movd xmm0, edi
punpckldq xmm2, xmm0
movq xmm0, xmm2
xor esi, esi
pxor xmm3, xmm3
movdqa xmm2, xmmword [0xa71c10]
nop word cs:[eax + eax]
movdqu xmm5, xmmword [ebp + esi*8]
pshufd xmm6, xmm5, 0x55
pand xmm5, xmmword [0xa71c00]
pand xmm6, xmm2
movzx eax, byte [ebp + esi*8 + 0xc]
movd xmm7, eax
psllw xmm7, 8
movdqa xmm4, xmm2
pandn xmm4, xmm7
por xmm4, xmm6
punpcklbw xmm4, xmm3
punpcklwd xmm4, xmm3
pxor xmm7, xmm7
punpckldq xmm7, xmm4
por xmm7, xmm5
movdqu xmm5, xmmword [ebp + esi*8]
movzx eax, byte [ebp + esi*8 + 0xd]
movd xmm4, eax
psllw xmm4, 8
movdqa xmm6, xmm2
pandn xmm6, xmm4
movdqa xmm4, xmm5
psrlq xmm4, 0x28
pand xmm4, xmm2
por xmm6, xmm4
punpcklbw xmm6, xmm3
punpcklwd xmm6, xmm3
pshufd xmm6, xmm6, 0xd4
psllq xmm6, 0x28
por xmm6, xmm7
movzx eax, byte [ebp + esi*8 + 0xe]
movd xmm4, eax
psllw xmm4, 8
movdqa xmm7, xmm2
pandn xmm7, xmm4
movdqa xmm4, xmm5
psrlq xmm4, 0x30
pand xmm4, xmm2
por xmm7, xmm4
punpcklbw xmm5, xmm5
pshufhw xmm4, xmm5, 0xff
pshufd xmm5, xmm4, 0xaa
movzx eax, byte [ebp + esi*8 + 0xf]
movd xmm4, eax
punpcklqdq xmm5, xmm4
punpcklbw xmm7, xmm3
punpcklwd xmm7, xmm3
pshufd xmm4, xmm7, 0xd4
psllq xmm4, 0x30
psllq xmm5, 0x38
por xmm5, xmm4
por xmm5, xmm6
pxor xmm1, xmm5
pxor xmm0, xmm5
add esi, 2
cmp edx, esi
jne 0x730ad0
pshufd xmm2, xmm1, 0xee
pxor xmm2, xmm1
movd dword [esp + 8], xmm2
pshufd xmm1, xmm2, 0x55
movd esi, xmm1
pshufd xmm1, xmm0, 0xee
pxor xmm1, xmm0
movd dword [esp + 4], xmm1
pshufd xmm0, xmm1, 0x55
movd ebx, xmm0
mov edi, dword [esp + 0x1c]
mov ebp, dword [esp + 4]
mov edx, dword [esp + 8]
nop dword [eax + eax]
mov eax, dword [ecx + 4]
xor esi, eax
xor ebx, eax
mov eax, dword [ecx]
xor edx, eax
xor ebp, eax
add ecx, 8
cmp ecx, edi
jne 0x730c10
mov edi, ebp
mov ebp, dword [esp + 0x18]
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x24]
test ecx, ecx
mov edi, dword [esp + 0x48]
mov eax, dword [esp]
je 0x730c66
lea eax, [edi + 0x38]
push ecx
push dword [esp + 0x20]
push eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], ebx
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0xc]
add esp, 0xc
mov dword [edi + 0x28], ecx
mov ecx, dword [esp + 4]
mov dword [edi + 8], ecx
mov dword [edi + 0xc], ebx
mov dword [edi + 0x10], ebp
mov ecx, dword [esp + 0x14]
mov dword [edi + 0x14], ecx
mov dword [edi + 0x18], eax
mov eax, dword [esp + 0x10]
mov dword [edi + 0x1c], eax
mov dword [edi + 0x20], edx
mov dword [edi + 0x24], esi
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret