Function at 0x61c200
Capabilities:
Encode data using xor

Disassembly:
push ebp
lea ebp, [esp - 0x30]
mov eax, dword fs:[0]
sub esp, 0x30
mov ecx, 2
push 0xffffffffffffffff
push 0x646d46
push eax
mov dword fs:[0], esp
sub esp, 0x1bc
cmp ecx, dword [ebp + 0x68]
sbb ecx, ecx
not ecx
and ecx, dword [ebp + 0x68]
push ebx
push esi
push edi
sub ecx, 0
je 0x61c5b3
sub ecx, 1
je 0x61c4c7
sub ecx, 1
jne 0x61c4b3
lea eax, [ebp - 0xc4]
push eax
push dword [ebp + 0x3c]
push dword [ebp + 0x38]
call fcn.0061d0e0
add esp, 0xc
lea ecx, [ebp - 0xa4]
call fcn.00452360
push 0x20
lea eax, [ebp - 0xc4]
mov dword [ebp - 4], 0
push eax
lea ecx, [ebp - 0xa4]
call fcn.00452bb0
lea ecx, [ebp - 0xa4]
call fcn.004523a0
mov ebx, dword [ebp + 0x5c]
mov ecx, eax
mov esi, dword [ebp + 0x64]
mov eax, dword [ecx]
mov dword [ebp + 0x20], eax
mov eax, dword [ecx + 4]
mov dword [ebp + 0x24], eax
mov eax, dword [ecx + 8]
mov dword [ebp + 0x28], eax
mov eax, dword [ecx + 0xc]
mov dword [ebp + 0x2c], eax
cmp ebx, 3
jb 0x61c304
mov edi, 0x32
nop
lea ecx, [ebp - 0xa4]
call fcn.00452480
push esi
lea eax, [ebp + 0x20]
push eax
lea ecx, [ebp - 0xa4]
call fcn.00452bb0
lea ecx, [ebp - 0xa4]
call fcn.004523a0
mov ecx, eax
mov eax, dword [ecx]
mov dword [ebp + 0x20], eax
mov eax, dword [ecx + 4]
mov dword [ebp + 0x24], eax
mov eax, dword [ecx + 8]
mov dword [ebp + 0x28], eax
mov eax, dword [ecx + 0xc]
mov dword [ebp + 0x2c], eax
sub edi, 1
jne 0x61c2c0
lea ecx, [ebp - 0x1c8]
call fcn.00431460
mov esi, dword [ebp + 0x40]
mov ecx, 8
mov byte [ebp - 4], 1
lea edi, [ebp]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp + 0x64]
cmp ebx, 3
jb 0x61c36c
mov ebx, 0x13
lea ecx, [ecx]
xor eax, eax
test edi, edi
je 0x61c345
mov cl, byte [ebp + eax + 0x20]
xor cl, bl
mov byte [ebp + eax - 0x1c], cl
inc eax
cmp eax, edi
jb 0x61c336
push edi
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x1c8]
call fcn.004d6190
push 0x20
lea eax, [ebp]
push eax
push eax
lea ecx, [ebp - 0x1c8]
call fcn.004d6230
dec ebx
test ebx, ebx
jg 0x61c330
push edi
lea eax, [ebp + 0x20]
push eax
lea ecx, [ebp - 0x1c8]
call fcn.004d6190
push 0x20
lea eax, [ebp]
push eax
push eax
lea ecx, [ebp - 0x1c8]
call fcn.004d6230
cmp dword [ebp + 0x70], 0
je 0x61c44b
mov eax, dword [ebp + 0x74]
test eax, eax
je 0x61c44b
mov eax, dword [eax]
mov dword [ebp + 0x68], eax
test eax, eax
je 0x61c44b
xor ebx, ebx
lea ecx, [ebp]
add ecx, ebx
cmp byte [ecx], 0x28
jne 0x61c413
mov edx, 0x20
mov esi, 0x6b1a50
sub edx, ebx
sub edx, 4
jb 0x61c3e1
lea ecx, [ecx]
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x61c3e6
add ecx, 4
add esi, 4
sub edx, 4
jae 0x61c3d0
cmp edx, 0xfffffffc
je 0x61c429
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x61c413
cmp edx, 0xfffffffd
je 0x61c429
mov al, byte [ecx + 1]
cmp al, byte [esi + 1]
jne 0x61c413
cmp edx, 0xfffffffe
je 0x61c429
mov al, byte [ecx + 2]
cmp al, byte [esi + 2]
jne 0x61c413
cmp edx, 0xffffffff
je 0x61c429
mov al, byte [ecx + 3]
cmp al, byte [esi + 3]
je 0x61c429
inc ebx
cmp ebx, 0x20
jb 0x61c3b2
mov eax, 0x20
mov ecx, dword [ebp + 0x68]
cmp eax, ecx
jbe 0x61c436
mov eax, ecx
jmp 0x61c43b
mov eax, ebx
test ebx, ebx
jne 0x61c41e
mov ecx, dword [ebp + 0x74]
mov dword [ecx], ebx
jmp 0x61c44b
mov ecx, dword [ebp + 0x74]
mov dword [ecx], eax
push eax
lea eax, [ebp]
push eax
push dword [ebp + 0x70]
call fcn.004b3b20
add esp, 0xc
push 0
push 0
push dword [ebp + 0x6c]
mov esi, dword [ebp + 0x48]
lea eax, [ebp]
push 1
push edi
push dword [ebp + 0x60]
push dword [ebp + 0x5c]
push dword [ebp + 0x58]
push dword [ebp + 0x54]
push dword [ebp + 0x50]
push dword [ebp + 0x4c]
push esi
push dword [ebp + 0x44]
push dword [ebp + 0x40]
push 0x20
push eax
call fcn.0061c200
mov esi, eax
add esp, 0x40
cmp esi, 1
jne 0x61c489
lea esi, [eax + 1]
lea ecx, [ebp - 0x1c8]
call fcn.00403120
lea ecx, [ebp - 0xa4]
call fcn.00403120
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
lea esp, [ebp + 0x30]
pop ebp
ret
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
lea esp, [ebp + 0x30]
pop ebp
ret
push dword [ebp + 0x6c]
mov esi, dword [ebp + 0x5c]
lea eax, [ebp - 0x3c]
push dword [ebp + 0x64]
push dword [ebp + 0x60]
push esi
push dword [ebp + 0x58]
push dword [ebp + 0x54]
push dword [ebp + 0x50]
push eax
push dword [ebp + 0x44]
push dword [ebp + 0x40]
push dword [ebp + 0x3c]
push dword [ebp + 0x38]
call fcn.0061ce10
add esp, 0x30
cmp esi, 3
mov esi, dword [ebp + 0x48]
jb 0x61c563
xor ecx, ecx
nop
mov al, byte [esi + ecx]
mov dl, byte [ebp + ecx - 0x3c]
cmp al, dl
jb 0x61c548
ja 0x61c52e
inc ecx
cmp ecx, 0x10
jl 0x61c500
xor ecx, ecx
xor eax, eax
pop edi
test ecx, ecx
pop esi
sete al
pop ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
lea esp, [ebp + 0x30]
pop ebp
ret
inc ecx
xor eax, eax
pop edi
test ecx, ecx
pop esi
sete al
pop ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
lea esp, [ebp + 0x30]
pop ebp
ret
not ecx
xor eax, eax
pop edi
test ecx, ecx
pop esi
sete al
pop ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
lea esp, [ebp + 0x30]
pop ebp
ret
xor eax, eax
mov cl, byte [esi + eax]
mov dl, byte [ebp + eax - 0x3c]
cmp cl, dl
jb 0x61c592
ja 0x61c58f
inc eax
cmp eax, 0x20
jl 0x61c565
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
lea esp, [ebp + 0x30]
pop ebp
ret
inc eax
jmp 0x61c594
not eax
test eax, eax
jne 0x61c4b3
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
lea esp, [ebp + 0x30]
pop ebp
ret
push dword [ebp + 0x74]
mov esi, dword [ebp + 0x6c]
push dword [ebp + 0x70]
mov edi, dword [ebp + 0x64]
mov ebx, dword [ebp + 0x60]
push esi
push 2
push edi
push ebx
push dword [ebp + 0x5c]
push dword [ebp + 0x58]
push dword [ebp + 0x54]
push dword [ebp + 0x50]
push dword [ebp + 0x4c]
push dword [ebp + 0x48]
push dword [ebp + 0x44]
push dword [ebp + 0x40]
push dword [ebp + 0x3c]
push dword [ebp + 0x38]
call fcn.0061c200
add esp, 0x40
cmp eax, 2
je 0x61c621
push 0
push 0
push esi
push 1
push edi
push ebx
push dword [ebp + 0x5c]
push dword [ebp + 0x58]
push dword [ebp + 0x54]
push dword [ebp + 0x50]
push dword [ebp + 0x4c]
push dword [ebp + 0x48]
push dword [ebp + 0x44]
push dword [ebp + 0x40]
push dword [ebp + 0x3c]
push dword [ebp + 0x38]
call fcn.0061c200
add esp, 0x40
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
lea esp, [ebp + 0x30]
pop ebp
ret