Function at 0x70a413bc
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x24
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x44]
test eax, eax
je 0x70a4163f
mov dword [esp + 0x10], eax
mov ebp, dword [esp + 0x40]
mov dword [esp + 0xc], ebp
mov ebp, dword [esp + 0x3c]
mov dword [esp + 8], ebp
mov ebp, dword [esp + 0x40]
add ebp, 8
mov dword [esp + 0x18], ebp
lea ebp, [ebx + 0xf0]
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x3c]
add ebp, 8
mov dword [esp + 0x14], ebp
nop
mov eax, dword [ebx + 0x110]
mov dword [esp + 4], eax
shl eax, 4
add eax, ebx
mov edx, dword [esp + 0xc]
mov edi, dword [edx]
xor edi, dword [eax]
mov esi, dword [edx + 4]
xor esi, dword [eax + 4]
mov dword [ebx + 0x100], edi
mov dword [ebx + 0x104], esi
sub edx, dword [esp + 0x40]
mov ebp, dword [esp + 0x18]
mov ecx, dword [ebp + edx]
xor ecx, dword [eax + 8]
mov edx, dword [ebp + edx + 4]
xor edx, dword [eax + 0xc]
mov dword [ebx + 0x108], ecx
mov dword [ebx + 0x10c], edx
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x70a41648
mov ebp, dword [esp + 0x48]
test ebp, ebp
je 0x70a4148e
mov eax, dword [esp + 0x48]
xor edi, dword [eax]
mov dword [ebx + 0x100], edi
xor esi, dword [eax + 4]
mov dword [ebx + 0x104], esi
xor ecx, dword [eax + 8]
mov dword [ebx + 0x108], ecx
xor edx, dword [eax + 0xc]
mov dword [ebx + 0x10c], edx
mov ebp, dword [esp + 4]
dec ebp
test ebp, ebp
jle 0x70a415c5
nop
movzx edx, byte [ebx + 0x105]
movzx eax, byte [ebx + 0x100]
mov esi, dword [edx*4 + 0x70a70620]
xor esi, dword [eax*4 + 0x70a70220]
movzx eax, byte [ebx + 0x10a]
xor esi, dword [eax*4 + 0x70a70a20]
movzx eax, byte [ebx + 0x10f]
xor esi, dword [eax*4 + 0x70a70e20]
mov dword [ebx + 0xf0], esi
movzx edx, byte [ebx + 0x109]
movzx eax, byte [ebx + 0x104]
mov ecx, dword [edx*4 + 0x70a70620]
xor ecx, dword [eax*4 + 0x70a70220]
movzx eax, byte [ebx + 0x10e]
xor ecx, dword [eax*4 + 0x70a70a20]
movzx eax, byte [ebx + 0x103]
xor ecx, dword [eax*4 + 0x70a70e20]
mov dword [ebx + 0xf4], ecx
movzx edx, byte [ebx + 0x10d]
movzx eax, byte [ebx + 0x108]
mov edx, dword [edx*4 + 0x70a70620]
xor edx, dword [eax*4 + 0x70a70220]
movzx eax, byte [ebx + 0x102]
xor edx, dword [eax*4 + 0x70a70a20]
movzx eax, byte [ebx + 0x107]
xor edx, dword [eax*4 + 0x70a70e20]
mov dword [ebx + 0xf8], edx
movzx eax, byte [ebx + 0x101]
movzx edi, byte [ebx + 0x10c]
mov eax, dword [eax*4 + 0x70a70620]
xor eax, dword [edi*4 + 0x70a70220]
movzx edi, byte [ebx + 0x106]
xor eax, dword [edi*4 + 0x70a70a20]
movzx edi, byte [ebx + 0x10b]
xor eax, dword [edi*4 + 0x70a70e20]
mov dword [ebx + 0xfc], eax
mov edi, ebp
shl edi, 4
add edi, ebx
xor esi, dword [edi]
mov dword [ebx + 0x100], esi
xor ecx, dword [edi + 4]
mov dword [ebx + 0x104], ecx
xor edx, dword [edi + 8]
mov dword [ebx + 0x108], edx
xor eax, dword [edi + 0xc]
mov dword [ebx + 0x10c], eax
dec ebp
jne 0x70a4149c
mov ecx, 0x70a70120
mov edx, 2
mov eax, dword [esp + 0x1c]
call sym._subshift
mov eax, dword [ebx]
xor eax, dword [ebx + 0xf0]
mov edx, dword [esp + 8]
mov dword [edx], eax
mov eax, dword [ebx + 4]
xor eax, dword [ebx + 0xf4]
mov dword [edx + 4], eax
sub edx, dword [esp + 0x3c]
mov eax, dword [ebx + 8]
xor eax, dword [ebx + 0xf8]
mov ebp, dword [esp + 0x14]
mov dword [ebp + edx], eax
mov eax, dword [ebx + 0xc]
xor eax, dword [ebx + 0xfc]
mov dword [ebp + edx + 4], eax
mov eax, dword [esp + 0x48]
test eax, eax
je 0x70a4162b
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 8]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
add dword [esp + 0xc], 0x10
add dword [esp + 8], 0x10
dec dword [esp + 0x10]
jne 0x70a41408
add esp, 0x24
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebp, dword [esp + 4]
dec ebp
test ebp, ebp
jle 0x70a41781
lea esi, [esi]
movzx edx, byte [ebx + 0x10d]
movzx eax, byte [ebx + 0x100]
mov esi, dword [edx*4 + 0x70a6f520]
xor esi, dword [eax*4 + 0x70a6f120]
movzx eax, byte [ebx + 0x10a]
xor esi, dword [eax*4 + 0x70a6f920]
movzx eax, byte [ebx + 0x107]
xor esi, dword [eax*4 + 0x70a6fd20]
mov dword [ebx + 0xf0], esi
movzx edx, byte [ebx + 0x101]
movzx eax, byte [ebx + 0x104]
mov ecx, dword [edx*4 + 0x70a6f520]
xor ecx, dword [eax*4 + 0x70a6f120]
movzx eax, byte [ebx + 0x10e]
xor ecx, dword [eax*4 + 0x70a6f920]
movzx eax, byte [ebx + 0x10b]
xor ecx, dword [eax*4 + 0x70a6fd20]
mov dword [ebx + 0xf4], ecx
movzx edx, byte [ebx + 0x105]
movzx eax, byte [ebx + 0x108]
mov edx, dword [edx*4 + 0x70a6f520]
xor edx, dword [eax*4 + 0x70a6f120]
movzx eax, byte [ebx + 0x102]
xor edx, dword [eax*4 + 0x70a6f920]
movzx eax, byte [ebx + 0x10f]
xor edx, dword [eax*4 + 0x70a6fd20]
mov dword [ebx + 0xf8], edx
movzx eax, byte [ebx + 0x109]
movzx edi, byte [ebx + 0x10c]
mov eax, dword [eax*4 + 0x70a6f520]
xor eax, dword [edi*4 + 0x70a6f120]
movzx edi, byte [ebx + 0x106]
xor eax, dword [edi*4 + 0x70a6f920]
movzx edi, byte [ebx + 0x103]
xor eax, dword [edi*4 + 0x70a6fd20]
mov dword [ebx + 0xfc], eax
mov edi, ebp
shl edi, 4
add edi, ebx
xor esi, dword [edi]
mov dword [ebx + 0x100], esi
xor ecx, dword [edi + 4]
mov dword [ebx + 0x104], ecx
xor edx, dword [edi + 8]
mov dword [ebx + 0x108], edx
xor eax, dword [edi + 0xc]
mov dword [ebx + 0x10c], eax
dec ebp
jne 0x70a41658
mov ecx, 0x70a6f020
xor edx, edx
mov eax, dword [esp + 0x1c]
call sym._subshift
mov eax, dword [esp + 0x48]
test eax, eax
je 0x70a417cd
mov edx, dword [esp + 0x48]
mov eax, dword [edx]
xor dword [ebx + 0xf0], eax
mov eax, dword [edx + 4]
xor dword [ebx + 0xf4], eax
mov eax, dword [edx + 8]
xor dword [ebx + 0xf8], eax
mov eax, dword [edx + 0xc]
xor dword [ebx + 0xfc], eax
mov edi, edx
mov esi, dword [esp + 0xc]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebx]
xor eax, dword [ebx + 0xf0]
mov ecx, dword [esp + 8]
mov dword [ecx], eax
mov eax, dword [ebx + 4]
xor eax, dword [ebx + 0xf4]
mov dword [ecx + 4], eax
mov edx, ecx
sub edx, dword [esp + 0x3c]
mov eax, dword [ebx + 8]
xor eax, dword [ebx + 0xf8]
mov ebp, dword [esp + 0x14]
mov dword [ebp + edx], eax
mov eax, dword [ebx + 0xc]
xor eax, dword [ebx + 0xfc]
mov dword [ebp + edx + 4], eax
jmp 0x70a4162b