Function at 0x629b70
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x4c
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x68]
mov ebp, dword [ecx + 0xc]
mov edi, dword [ecx + 8]
add dword [ecx], edx
mov dword [esp + 0x24], ebp
mov ebp, dword [ecx + 0x14]
mov dword [esp + 0x20], edi
mov edi, dword [ecx + 0x10]
mov dword [esp + 0x14], ebp
mov ebp, dword [ecx + 0x1c]
mov dword [esp + 0x10], edi
mov edi, dword [ecx + 0x18]
mov dword [esp + 0x1c], ebp
mov ebp, dword [ecx + 0x24]
mov dword [esp + 0x18], edi
mov edi, dword [ecx + 0x20]
mov dword [esp + 0x2c], ebp
mov ebp, dword [ecx + 0x28]
adc dword [ecx + 4], 0
mov dword [esp + 0x28], edi
test ebp, ebp
je 0x629d1e
mov ebx, 8
lea eax, [ecx + ebp + 0x38]
sub ebx, ebp
cmp edx, ebx
jb 0x629ee1
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x64]
mov dword [esp + 8], ebx
mov dword [esp + 4], edx
mov dword [esp], eax
mov dword [esp + 0x60], ecx
call sub.msvcrt.dll_memcpy
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x68]
add dword [esp + 0x64], ebx
lea edx, [ebp + edx - 8]
mov ebp, dword [ecx + 0x3c]
mov edi, dword [ecx + 0x38]
xor dword [esp + 0x2c], ebp
mov dword [esp + 0x34], ebp
mov ebp, dword [ecx + 0x30]
xor dword [esp + 0x28], edi
mov dword [esp + 0x30], edi
test ebp, ebp
je 0x629d0e
xor eax, eax
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x38], ebp
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
mov dword [esp + 0x68], edx
lea esi, cs:[esi]
nop
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov ebp, esi
add eax, esi
adc edx, edi
shld esi, edi, 0xd
shld edi, ebp, 0xd
xor esi, eax
xor edi, edx
xchg edx, eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x2c]
add ecx, eax
mov dword [esp + 0x1c], edi
mov esi, dword [esp + 0x20]
mov edi, eax
adc ebx, edx
shld eax, edx, 0x10
xor eax, ecx
shld edx, edi, 0x10
mov edi, dword [esp + 0x24]
xor edx, ebx
add esi, eax
adc edi, edx
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], edi
mov edi, eax
shld eax, edx, 0x15
xor eax, dword [esp + 0x20]
shld edx, edi, 0x15
xor edx, dword [esp + 0x24]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
add ecx, eax
mov esi, eax
mov edi, edx
adc ebx, edx
shld esi, edx, 0x11
add dword [esp + 0x10], 1
shld edi, eax, 0x11
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x38]
xor esi, ecx
xor edi, ebx
xchg ecx, ebx
cmp edx, eax
jne 0x629c50
mov dword [esp + 0x10], esi
mov edx, dword [esp + 0x68]
mov dword [esp + 0x14], edi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x60]
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
xor dword [esp + 0x20], ebx
xor dword [esp + 0x24], esi
mov eax, edx
mov ebx, edx
and eax, 0xfffffff8
add eax, dword [esp + 0x64]
and ebx, 7
mov ebp, eax
cmp dword [esp + 0x64], eax
je 0x629e6c
mov eax, dword [ecx + 0x30]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x64]
lea esi, cs:[esi]
nop
mov edi, dword [ecx]
mov ebp, dword [ecx + 4]
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x28], edi
xor eax, edi
xor edx, ebp
mov dword [esp + 0x2c], ebp
test ebx, ebx
je 0x629e3b
xor ebp, ebp
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x10], ebp
nop
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
mov ebp, esi
add ecx, esi
adc ebx, edi
shld esi, edi, 0xd
shld edi, ebp, 0xd
xor esi, ecx
mov ebp, eax
xor edi, ebx
xchg ecx, ebx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x1c]
add ecx, eax
adc ebx, edx
shld eax, edx, 0x10
mov dword [esp + 0x18], ecx
xor eax, ecx
shld edx, ebp, 0x10
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x1c], ebx
xor edx, ebx
mov ebx, dword [esp + 0x24]
mov ebp, eax
add ecx, eax
adc ebx, edx
shld eax, edx, 0x15
mov dword [esp + 0x20], ecx
shld edx, ebp, 0x15
xor eax, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x24], ebx
xor edx, ebx
mov ebx, dword [esp + 0x1c]
mov ebp, esi
add ecx, esi
adc ebx, edi
shld esi, edi, 0x11
add dword [esp + 0x10], 1
shld edi, ebp, 0x11
xor esi, ecx
xor edi, ebx
xchg ecx, ebx
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x18], ecx
cmp dword [esp + 0x38], ebx
jne 0x629d90
mov dword [esp + 0x10], esi
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x14], edi
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
add ecx, 8
xor dword [esp + 0x20], ebx
xor dword [esp + 0x24], esi
cmp dword [esp + 0x30], ecx
jne 0x629d60
mov ebp, dword [esp + 0x30]
mov ebx, dword [esp + 0x3c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + 0x60]
test ebx, ebx
jne 0x629eb3
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov dword [ecx + 0x28], ebx
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x10]
mov dword [ecx + 0xc], edx
mov edx, dword [esp + 0x14]
mov dword [ecx + 0x10], eax
mov eax, dword [esp + 0x18]
mov dword [ecx + 0x14], edx
mov edx, dword [esp + 0x1c]
mov dword [ecx + 0x18], eax
mov eax, dword [esp + 0x28]
mov dword [ecx + 0x1c], edx
mov edx, dword [esp + 0x2c]
mov dword [ecx + 0x20], eax
mov dword [ecx + 0x24], edx
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x60], ecx
mov esi, dword [esp + 0x10]
lea edx, [ecx + 0x38]
xor eax, eax
mov edi, dword [esp + 0x14]
movzx ecx, byte [ebp + eax]
mov byte [edx + eax], cl
add eax, 1
cmp eax, ebx
jb 0x629ec4
mov dword [esp + 0x10], esi
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x14], edi
jmp 0x629e70
mov dword [esp + 8], edx
mov edx, dword [esp + 0x64]
mov dword [esp], eax
mov dword [esp + 4], edx
call sub.msvcrt.dll_memcpy
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x68]
add dword [ecx + 0x28], edx
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret