Function at 0x403580
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x4b53d1
call fcn.004b4fc8
sub esp, 0x78
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x18], 0xd837bc75
xor ebx, ebx
mov dword [ebp - 0x18], ebx
jmp 0x4035b2
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x48], 0x624039b6
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x4035a4
mov dword [ebp - 0x18], ebx
push 2
pop esi
jmp 0x4035e8
cmp byte [ebp - 0x11], bl
je 0x4035d1
push ebx
push 0x2405
call dword [0xae8534]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp + eax*4 - 0x48]
mov eax, dword [ebp - 0x40]
imul ecx, eax
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x48], ecx
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], esi
mov byte [ebp - 0x11], bl
jle 0x4035c0
cmp byte [ebp - 0x11], bl
je 0x4035ff
push ebx
push ebx
push ebx
push ebx
call dword [0xae83a4]
mov dword [ebp - 0x28], 0x520b
cmp dword [ebp - 0x28], 0x5396
jle 0x40365b
mov edi, ebx
mov esi, ebx
mov eax, edi
mov ecx, esi
sar eax, cl
cdq
push edx
push eax
lea ecx, [ebp - 0x84]
call fcn.00401b08
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x403631
mov eax, dword [eax]
push eax
call fcn.0049f827
pop ecx
push ebx
push 1
lea ecx, [ebp - 0x84]
call fcn.0040a247
inc esi
cmp esi, 0x4d11
jl 0x403613
inc edi
cmp edi, 0x100e
jl 0x403611
push 2
pop esi
mov dword [ebp - 0x2c], 0xa7ef23e4
mov dword [ebp - 4], ebx
cmp dword [ebp - 0x28], 0x4f76
jge 0x403679
push 0xac1560
call fcn.0049f827
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x4036a2
push 3
lea ecx, [ebp - 0x6c]
call fcn.00409c99
mov dword [ebp - 0x18], ebx
jmp 0x4036bf
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x1c], 0xffffffff
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 1
jl 0x4036b1
mov dword [ebp - 0x18], ebx
jmp 0x4036d8
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x3c], 0x88216928
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], esi
jl 0x4036ca
mov dword [ebp - 0x28], 0x62c6
mov edi, 0xae4c58
cmp dword [ebp - 0x28], 0x631a
jle 0x40371f
mov esi, ebx
mov dword [ebp - 0x2c], ebx
mov eax, esi
mov ecx, ebx
sar eax, cl
cdq
push edx
push eax
mov ecx, edi
call fcn.00409a6e
inc ebx
cmp ebx, 0x3908
jl 0x4036f7
inc esi
cmp esi, 0x6b4c
push 0
pop ebx
jl 0x4036f4
push 2
pop esi
mov dword [ebp - 0x18], ebx
jmp 0x403730
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x6c]
mov dword [eax + ecx*4], esi
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x403724
mov dword [ebp - 4], esi
cmp dword [ebp - 0x28], 0x5f9c
jge 0x40374e
mov edx, 0xac1600
mov ecx, edi
call fcn.0040c2f7
or dword [ebp - 4], 0xffffffff
jmp 0x40377c
mov byte [ebp - 0x11], bl
cmp byte [ebp - 0x11], 0
je 0x403855
mov dword [ebp - 0x2c], 0x27ad
cmp dword [ebp - 0x2c], 0x29b0
jle 0x403805
mov dword [ebp - 0x20], ebx
mov esi, ebx
mov dword [ebp - 0x18], ebx
mov eax, ebx
mov dword [ebp - 0x24], ebx
mov ecx, ebx
mov dword [ebp - 0x28], ecx
and eax, esi
mov dword [ebp - 0x30], eax
mov ebx, dword [ebp - 0x20]
mov esi, eax
mov eax, esi
xor eax, ecx
or eax, ebx
cdq
push edx
push eax
mov ecx, edi
call fcn.00409a6e
mov ecx, dword [ebp - 0x28]
inc ecx
mov dword [ebp - 0x28], ecx
cmp ecx, 0x7a1a
jl 0x4037b5
mov eax, dword [ebp - 0x24]
inc eax
mov dword [ebp - 0x24], eax
cmp eax, 0x361e
push 0
pop ebx
mov esi, dword [ebp - 0x18]
jl 0x4037a6
inc esi
mov dword [ebp - 0x18], esi
cmp esi, 0x1b51
jl 0x4037a1
mov eax, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x20], eax
cmp eax, 0x3406
jl 0x40379c
push 2
pop esi
push 0x24d1
call dword [0xae808c]
mov dword [ebp - 4], 4
cmp dword [ebp - 0x2c], 0x26f7
jge 0x40382c
mov edx, 0xac1654
mov ecx, edi
call fcn.0040c2f7
or dword [ebp - 4], 0xffffffff
jmp 0x403855
mov dword [ebp - 0x1c], 0xa
jmp 0x403985
mov dword [ebp - 0x24], 1
mov dword [ebp - 0x20], 0xffffffff
mov dword [ebp - 0x2c], 1
mov dword [ebp - 0x28], 0x9d940313
push esi
lea ecx, [ebp - 0x60]
call fcn.00409c99
push 3
lea ecx, [ebp - 0x54]
call fcn.00409c99
mov dword [ebp - 0x18], ebx
jmp 0x4038a5
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x60]
mov dword [eax + ecx*4], 0xa1dd
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], esi
jl 0x403895
mov dword [ebp - 0x18], ebx
jmp 0x4038bf
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x54]
mov dword [eax + ecx*4], 0xfffffff7
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x4038af
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
mov ecx, 0xf0415773
sub ecx, eax
cmp ecx, dword [ebp - 0x20]
jle 0x4038da
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x24]
sub eax, dword [ebp - 0x24]
mov dword [ebp - 0x2c], eax
imul eax, dword [ebp - 0x2c], 0x9a54
test eax, eax
je 0x4038f8
cmp dword [ebp - 0x1c], ebx
je 0x4038f8
xor ecx, ecx
inc ecx
jmp 0x4038fa
mov ecx, ebx
mov eax, dword [ebp - 0x28]
imul eax, ecx
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x2c]
add eax, 0x5b772aec
imul eax, dword [ebp - 0x28]
test eax, eax
jne 0x40391c
cmp dword [ebp - 0x1c], ebx
jne 0x40391c
mov ecx, ebx
jmp 0x40391f
xor ecx, ecx
inc ecx
mov edx, dword [ebp - 0x60]
mov eax, dword [ebp - 0x20]
imul eax, ecx
xor ecx, ecx
cmp eax, dword [edx + 4]
setle cl
mov eax, dword [ebp - 0x24]
sub eax, ecx
xor ecx, ecx
cmp eax, 0xffffffff
setne cl
add ecx, dword [edx + 4]
xor edx, edx
cmp ecx, 0x2a1e
setle dl
mov ecx, dword [ebp - 0x1c]
add ecx, edx
mov dword [ebp - 0x3c], ecx
mov eax, dword [ebp - 0x1c]
xor edx, edx
cmp ecx, eax
setge dl
mov eax, dword [ebp - 0x6c]
mov dword [eax], edx
mov eax, dword [ebp - 0x28]
xor ecx, ecx
cmp edx, eax
setg cl
mov eax, dword [ebp - 0x54]
mov dword [eax + 4], ecx
lea ecx, [ebp - 0x54]
call fcn.00409d6b
lea ecx, [ebp - 0x60]
call fcn.00409d6b
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 0xd
jle 0x403861
lea ecx, [ebp - 0x6c]
call fcn.00409d6b
mov eax, dword [ebp - 0x34]
cmp byte [eax], 0
je 0x4039aa
push 0x4a2
call dword [0xae8094]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret