Function at 0x412580
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x74
call fcn.0048af60
mov eax, dword [0x51e710]
xor eax, esp
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x7c]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x90]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x8c]
push edi
mov edi, dword [esp + 0x88]
xor ebp, ebp
push eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], ebp
call fcn.004275d0
mov ebx, eax
add esp, 4
test ebx, ebx
jl 0x412666
mov eax, dword [esp + 0x98]
cmp eax, 0xffffffff
jne 0x41263e
mov dword [esp + 0x98], ebx
mov ecx, dword [edi + 0x10]
push ecx
call fcn.00410f10
mov ebp, eax
sub ebp, 1
push edi
and ebp, 7
call fcn.00411ea0
mov ecx, ebp
mov edx, 0xff
shl edx, cl
mov cl, byte [esi]
add esp, 8
test cl, dl
je 0x41267b
push 0x69
push 0x4efe94
push 0x85
push 0x7e
push 4
call fcn.00415990
add esp, 0x14
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x70]
xor ecx, esp
call fcn.00487e85
add esp, 0x74
ret
cmp eax, 0xfffffffe
jne 0x41264c
mov dword [esp + 0x98], eax
jmp 0x4125e6
jge 0x4125e6
push 0x61
push 0x4efe94
push 0x88
push 0x7e
push 4
call fcn.00415990
add esp, 0x14
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
mov ecx, dword [esp + 0x70]
xor ecx, esp
call fcn.00487e85
add esp, 0x74
ret
test ebp, ebp
jne 0x412685
add esi, 1
sub eax, 1
mov edx, dword [esp + 0x98]
lea ecx, [ebx + edx + 2]
cmp eax, ecx
jge 0x4126c0
push 0x73
push 0x4efe94
push 0x6d
push 0x7e
push 4
call fcn.00415990
mov eax, dword [esp + 0x24]
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x70]
xor ecx, esp
call fcn.00487e85
add esp, 0x74
ret
cmp byte [esi + eax - 1], 0xbc
je 0x4126f6
push 0x78
push 0x4efe94
push 0x86
push 0x7e
push 4
call fcn.00415990
mov eax, dword [esp + 0x24]
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x70]
xor ecx, esp
call fcn.00487e85
add esp, 0x74
ret
sub eax, ebx
sub eax, 1
mov edi, eax
push 0x7d
lea edx, [esi + edi]
push 0x4efe94
push edi
mov dword [esp + 0x2c], edx
call fcn.004136c0
add esp, 0xc
test eax, eax
mov dword [esp + 0x14], eax
jne 0x412739
push 0x80
push 0x4efe94
push 0x41
push 0x7e
push 4
call fcn.00415990
add esp, 0x14
jmp 0x412928
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
push ecx
push ebx
push edx
push edi
push eax
call fcn.00426f00
add esp, 0x14
test eax, eax
jl 0x412928
test edi, edi
mov edx, dword [esp + 0x14]
jle 0x412775
mov eax, edx
sub esi, edx
mov dword [esp + 0x1c], edi
mov cl, byte [esi + eax]
xor byte [eax], cl
add eax, 1
sub dword [esp + 0x1c], 1
jne 0x412766
test ebp, ebp
je 0x412789
mov ecx, 8
sub ecx, ebp
mov eax, 0xff
sar eax, cl
and byte [edx], al
xor esi, esi
cmp byte [edx], 0
jne 0x4127a0
lea eax, [edi - 1]
cmp esi, eax
jge 0x4127a0
add esi, 1
cmp byte [esi + edx], 0
je 0x412793
mov cl, byte [esi + edx]
add esi, 1
cmp cl, 1
je 0x4127cb
push 0x8c
push 0x4efe94
push 0x87
push 0x7e
push 4
call fcn.00415990
add esp, 0x14
jmp 0x412928
mov eax, dword [esp + 0x98]
test eax, eax
jl 0x4127fe
mov edx, edi
sub edx, esi
cmp edx, eax
je 0x4127fe
push 0x91
push 0x4efe94
push 0x88
push 0x7e
push 4
call fcn.00415990
add esp, 0x14
jmp 0x412928
lea eax, [esp + 0x28]
push eax
call fcn.004210c0
mov ecx, dword [esp + 0x1c]
push 0
push ecx
lea edx, [esp + 0x34]
push edx
call fcn.00421110
push 8
lea eax, [esp + 0x3c]
push 0x4efe8c
push eax
call fcn.004212c0
mov ecx, dword [esp + 0x40]
push ebx
push ecx
lea edx, [esp + 0x4c]
push edx
call fcn.004212c0
add esp, 0x28
sub edi, esi
je 0x412856
mov eax, dword [esp + 0x14]
push edi
add esi, eax
lea ecx, [esp + 0x2c]
push esi
push ecx
call fcn.004212c0
add esp, 0xc
push 0
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0x30]
push eax
call fcn.00421400
lea ecx, [esp + 0x34]
push ecx
call fcn.00421350
mov ecx, dword [esp + 0x30]
add esp, 0x10
cmp ebx, 4
mov eax, ebx
lea edx, [esp + 0x40]
jb 0x412897
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x41289b
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x412883
test eax, eax
je 0x4128f8
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x4128ea
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x4128f8
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x4128ea
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x4128f8
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x4128ea
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x4128f8
movzx esi, byte [edx]
movzx edx, byte [ecx]
sub esi, edx
je 0x4128f8
test esi, esi
mov eax, 1
jg 0x4128fa
or eax, 0xffffffff
jmp 0x4128fa
xor eax, eax
test eax, eax
je 0x412920
push 0x9e
push 0x4efe94
push 0x68
push 0x7e
push 4
call fcn.00415990
add esp, 0x14
mov dword [esp + 0x10], 0
jmp 0x412928
mov dword [esp + 0x10], 1
mov eax, dword [esp + 0x14]
test eax, eax
je 0x412627
push eax
call fcn.00413870
mov ecx, dword [esp + 0x84]
mov eax, dword [esp + 0x14]
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00487e85
add esp, 0x74
ret