Function at 0x4852e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x7c
mov dword [esp + 0x40], eax
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], ecx
mov ebx, dword [esp + 0xb0]
mov esi, dword [esp + 0xb4]
mov ebp, dword [esp + 0xb8]
xor edi, edi
mov dword [esp + 0x3c], ebx
mov ebx, edi
mov dword [esp + 0x44], esi
mov esi, eax
jmp 0x485330
mov eax, dword [esp + 0x68]
shl eax, 8
and eax, esi
cmp eax, 1
sbb edi, 0xffffffff
inc ebx
lea eax, [esp + 0x6c]
mov dword [esp + 8], eax
lea edx, [esp + 0x68]
mov dword [esp + 4], edx
mov dword [esp], ebx
call fcn.0045daa0
test eax, eax
jne 0x485320
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0xac]
cdq
idiv edi
mov dword [esp + 0x44], eax
mov edx, ebp
mov edi, ebx
cmp ebp, 4
jae 0x48550b
test dl, 2
je 0x48537c
mov word [edi], 0
add edi, 2
and edx, 1
je 0x485384
mov byte [edi], 0
mov edi, ebp
shr edi, 2
lea eax, [esi + 4]
cmp ebx, eax
setae al
lea edx, [ebx + 4]
cmp esi, edx
setae dl
or eax, edx
cmp ebp, 6
seta dl
and eax, edx
mov edx, ebx
or edx, esi
and edx, 3
sete dl
and eax, edx
xor eax, 1
mov edx, edi
shl edx, 2
mov dword [esp + 0x54], edx
sete dl
or al, dl
mov byte [esp + 0x5b], al
je 0x4854fe
mov dword [esp + 0x5c], 0
mov dword [esp + 0x3c], 0
mov eax, dword [esp + 0xac]
and eax, 1
add eax, dword [esp + 0x44]
mov dword [esp + 0x50], eax
lea esi, [esi]
lea eax, [esp + 0x6c]
mov dword [esp + 8], eax
lea edx, [esp + 0x68]
mov dword [esp + 4], edx
mov eax, dword [esp + 0x3c]
mov dword [esp], eax
call fcn.0045daa0
test eax, eax
je 0x4854f4
mov eax, dword [esp + 0x68]
shl eax, 8
test dword [esp + 0x40], eax
je 0x4854eb
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x485526
mov dword [esp + 0x24], ebp
mov dword [esp + 0x20], esi
mov edx, dword [esp + 0xa4]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x98]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x90]
mov dword [esp + 8], edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x48]
mov dword [esp], edx
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0xa8]
call fcn.00484eb0
test eax, eax
je 0x48555c
mov eax, dword [esp + 0x44]
add dword [esp + 0xa8], eax
test ebp, ebp
jle 0x4854eb
cmp byte [esp + 0x5b], 0
jne 0x4854d1
xor eax, eax
lea esi, [esi]
mov edx, dword [esi + eax*4]
xor dword [ebx + eax*4], edx
inc eax
cmp edi, eax
ja 0x4854c0
cmp ebp, dword [esp + 0x54]
je 0x4854eb
mov eax, dword [esp + 0x5c]
lea esi, [esi]
lea edi, [edi]
mov dl, byte [esi + eax]
xor byte [ebx + eax], dl
inc eax
cmp ebp, eax
jg 0x4854e0
inc dword [esp + 0x3c]
jmp 0x4853f0
mov al, 1
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x54]
mov dword [esp + 0x5c], eax
jmp 0x4853d2
test bl, 1
jne 0x485566
test edi, 2
jne 0x485571
mov ecx, edx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
jmp 0x48536f
mov dword [esp + 0x10], 0x109
mov dword [esp + 0xc], str.t1_enc.c
mov dword [esp + 8], 0x146
mov dword [esp + 4], 0x11c
mov dword [esp], 0x14
call fcn.004b26a0
xor eax, eax
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
xor eax, eax
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
mov byte [ebx], 0
lea edi, [ebx + 1]
lea edx, [ebp - 1]
jmp 0x485510
mov word [edi], 0
add edi, 2
sub edx, 2
jmp 0x485518