Function at 0x20004b40
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xcec
mov eax, dword [0x20026464]
xor eax, esp
mov dword [esp + 0xce8], eax
mov ecx, dword [esp + 0xcf0]
push ebx
push ebp
mov ebp, dword [esp + 0xd04]
push esi
mov esi, dword [esp + 0xd0c]
push edi
mov dword [esp + 0x18], esi
test ecx, ecx
jl 0x200052ac
mov ebx, dword [esp + 0xd04]
test ebx, ebx
jl 0x200052ac
test ebp, ebp
je 0x200052ac
test esi, esi
je 0x200052ac
mov eax, dword [esp + 0xd08]
cmp eax, 0x60
je 0x20004bad
cmp eax, 0x61
jne 0x200052ac
mov eax, dword [0x2002b32c]
cmp eax, 1
jne 0x20004bcf
cmp ecx, 0xf
jg 0x200052ac
cmp ebx, 3
jg 0x200052ac
mov dword [esp + 0x14], ecx
jmp 0x20004c23
cmp eax, 3
jne 0x200052a8
cmp ecx, 0x27
jg 0x200052ac
cmp ecx, 0x20
jl 0x20004bef
cmp ebx, 0xf
jg 0x200052ac
cmp ecx, 0x1f
jg 0x20004c03
cmp ebx, 3
jg 0x200052ac
mov dword [esp + 0x14], ecx
jmp 0x20004c23
mov eax, ebx
cdq
and edx, 3
add eax, edx
sar eax, 2
and ebx, 0x80000003
lea eax, [eax + ecx*4 - 0x60]
mov dword [esp + 0x14], eax
jns 0x20004c23
dec ebx
or ebx, 0xfffffffc
inc ebx
mov eax, dword [0x2002b328]
cmp eax, dword [0x20026208]
jne 0x2000503c
cmp dword [0x200298e8], 0xffffffff
je 0x2000503c
mov ecx, dword [str.FF97100509]
mov edx, dword [0x2002052c]
mov ax, word [0x20020530]
push 0x3dd
mov dword [esp + 0x130], edx
mov dword [esp + 0x12c], ecx
mov cl, byte [0x20020532]
lea edx, [esp + 0x137]
push 0
push edx
mov word [esp + 0x13c], ax
mov byte [esp + 0x13e], cl
call fcn.200132c0
push 0xff
lea eax, [esp + 0x39]
push 0
push eax
mov dword [esp + 0x28], 0
mov byte [esp + 0x40], 0
call fcn.200132c0
mov ecx, dword [esp + 0x2c]
push ecx
lea edx, [esp + 0x44]
push str._02X
push edx
call fcn.2001364c
lea eax, [esp + 0x4c]
add esp, 0x24
mov esi, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x20004cc5
lea edi, [esp + 0x128]
sub eax, esi
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x20004cd6
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebx
lea eax, [esp + 0x2c]
and ecx, 3
push str._02X
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.2001364c
lea eax, [esp + 0x34]
add esp, 0xc
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x20004d05
lea edi, [esp + 0x128]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x20004d18
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0xd08]
push ecx
lea edx, [esp + 0x2c]
push str._02X
push edx
call fcn.2001364c
lea eax, [esp + 0x34]
add esp, 0xc
mov ecx, eax
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x20004d50
lea edi, [esp + 0x128]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x20004d63
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
movzx eax, byte [ebp]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x2c]
push str._02X
push ecx
call fcn.2001364c
lea eax, [esp + 0x34]
add esp, 0xc
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x20004d96
lea edi, [esp + 0x128]
sub eax, ecx
mov esi, ecx
dec edi
lea esp, [esp]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x20004db0
movzx edx, byte [ebp + 1]
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
push edx
mov ecx, eax
lea eax, [esp + 0x2c]
and ecx, 3
push str._02X
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.2001364c
lea eax, [esp + 0x34]
add esp, 0xc
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x20004de3
lea edi, [esp + 0x128]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x20004df6
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
movzx ecx, byte [ebp + 2]
push ecx
lea edx, [esp + 0x2c]
push str._02X
push edx
call fcn.2001364c
lea eax, [esp + 0x34]
add esp, 0xc
mov ecx, eax
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x20004e30
lea edi, [esp + 0x128]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x20004e43
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
movzx eax, byte [ebp + 3]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x2c]
push str._02X
push ecx
call fcn.2001364c
lea eax, [esp + 0x34]
add esp, 0xc
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x20004e76
lea edi, [esp + 0x128]
sub eax, ecx
mov esi, ecx
dec edi
lea esp, [esp]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x20004e90
movzx edx, byte [ebp + 4]
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
push edx
mov ecx, eax
lea eax, [esp + 0x2c]
and ecx, 3
push str._02X
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.2001364c
lea eax, [esp + 0x34]
add esp, 0xc
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x20004ec3
lea edi, [esp + 0x128]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x20004ed6
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
movzx ecx, byte [ebp + 5]
push ecx
lea edx, [esp + 0x2c]
push str._02X
push edx
call fcn.2001364c
lea eax, [esp + 0x34]
add esp, 0xc
mov ecx, eax
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x20004f10
lea edi, [esp + 0x128]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x20004f23
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
lea eax, [esp + 0x128]
rep movsb byte es:[edi], byte [esi]
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x20004f41
mov cx, word [0x2002051c]
mov dl, byte [0x2002051e]
mov word [eax], cx
mov byte [eax + 2], dl
lea eax, [esp + 0x128]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x20004f66
sub eax, edx
shr eax, 1
mov edi, eax
push edi
call fcn.200137a6
mov esi, eax
lea eax, [esp + 0x12c]
add esp, 4
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x20004f88
sub eax, edx
push eax
lea eax, [esp + 0x12c]
push esi
push eax
call fcn.200028c0
push 0x100
lea ecx, [esp + 0x520]
push 0
push ecx
mov dword [esp + 0x28], 0x100
call fcn.200132c0
mov ecx, dword [0x200298e8]
add esp, 0x18
lea edx, [esp + 0x510]
push edx
lea eax, [esp + 0x14]
push eax
push esi
push edi
push ecx
call fcn.20002870
push esi
call fcn.200136c9
mov eax, dword [esp + 0x514]
add esp, 4
cmp al, 0xfa
je 0x200052a8
cmp byte [esp + 0x520], 0x90
jne 0x200052a8
cmp byte [esp + 0x521], 0
jne 0x200052a8
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x514]
mov dword [ecx], eax
mov eax, dword [esp + 0x518]
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x51c]
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], edx
mov eax, 1
jmp 0x200052af
cmp eax, dword [0x20026270]
jne 0x2000516c
push 0x100
push 0
push 0x20027658
call fcn.200132c0
movzx eax, byte [esp + 0x20]
mov cl, byte [esp + 0xd14]
mov byte [0x2002765e], al
mov byte [0x20027660], cl
mov byte [0x20027658], 0
mov byte [0x20027659], 0x55
mov byte [0x2002765a], 0xaa
mov byte [0x2002765b], 0xc
mov byte [0x2002765c], 3
mov byte [0x2002765d], 0xff
mov byte [0x2002765f], bl
movzx edx, byte [ebp]
mov byte [0x20027661], dl
movzx eax, byte [ebp + 1]
mov byte [0x20027662], al
movzx ecx, byte [ebp + 2]
mov byte [0x20027663], cl
movzx edx, byte [ebp + 3]
mov byte [0x20027664], dl
movzx eax, byte [ebp + 4]
mov byte [0x20027665], al
movzx ecx, byte [ebp + 5]
add esp, 0xc
mov byte [0x20027666], cl
xor cl, cl
mov eax, 1
jmp 0x200050f0
mov dl, byte [eax + 0x20027659]
xor dl, byte [eax + 0x20027658]
add eax, 2
xor cl, dl
cmp eax, 0xe
jle 0x200050f0
push 0x1000
push 0
push 0x20028760
mov byte [0x20027667], cl
call fcn.200132c0
add esp, 0xc
call fcn.20003b30
cmp byte [0x20028764], 3
jne 0x20005162
cmp byte [0x20028765], 0xff
jne 0x20005162
mov eax, dword [0x20028766]
mov dword [esi], eax
mov ecx, dword [0x2002876a]
mov dword [esi + 4], ecx
mov edx, dword [0x2002876e]
mov dword [esi + 8], edx
mov eax, dword [0x20028772]
mov dword [esi + 0xc], eax
mov eax, 1
jmp 0x200052af
mov eax, 0xfffffffd
jmp 0x200052af
push 0x3ff
lea ecx, [esp + 0x8fd]
push 0
push ecx
mov byte [esp + 0x904], 0
call fcn.200132c0
movzx ecx, byte [ebp]
movzx edx, byte [esp + 0x20]
xor eax, eax
mov dword [esp + 0x2a], eax
mov dword [esp + 0x2e], eax
mov word [esp + 0x32], ax
mov al, byte [esp + 0xd14]
mov byte [esp + 0x2a], dl
movzx edx, byte [ebp + 1]
mov byte [esp + 0x2d], cl
movzx ecx, byte [ebp + 3]
mov byte [esp + 0x2c], al
movzx eax, byte [ebp + 2]
add esp, 0xc
mov byte [esp + 0x22], dl
movzx edx, byte [ebp + 4]
mov byte [esp + 0x24], cl
mov byte [esp + 0x23], al
movzx eax, byte [ebp + 5]
push 0xb
lea ecx, [esp + 0x20]
push ecx
mov ecx, dword [0x2002a220]
mov byte [esp + 0x2d], dl
mov edx, dword [0x2002a21c]
sub esp, 0xc
mov byte [esp + 0x3a], al
mov eax, esp
mov dword [eax], edx
mov edx, dword [0x2002a224]
mov dword [eax + 4], ecx
mov byte [esp + 0x30], 3
mov byte [esp + 0x31], 0xff
mov byte [esp + 0x33], bl
mov dword [eax + 8], edx
call fcn.20004060
add esp, 0x14
mov dword [esp + 0x10], eax
cmp eax, 0xf
jne 0x200052af
mov edx, dword [0x2002a21c]
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x8fc]
push ecx
mov ecx, dword [0x2002a220]
sub esp, 0xc
mov eax, esp
mov dword [eax], edx
mov edx, dword [0x2002a224]
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
call fcn.20004150
add esp, 0x14
test eax, eax
jne 0x200052a8
cmp dword [esp + 0x10], 0xf
jb 0x200052a8
cmp byte [esp + 0x8f8], 3
jne 0x200052a8
cmp byte [esp + 0x8f9], 0xff
jne 0x200052a8
mov eax, dword [esp + 0x8fa]
mov ecx, dword [esp + 0x8fe]
mov edx, dword [esp + 0x902]
mov dword [esi], eax
mov eax, dword [esp + 0x906]
mov dword [esi + 4], ecx
mov dword [esi + 8], edx
mov dword [esi + 0xc], eax
mov eax, 1
jmp 0x200052af
xor eax, eax
jmp 0x200052af
or eax, 0xffffffff
mov ecx, dword [esp + 0xcf8]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.20012ef0
add esp, 0xcec
ret 0x14