Function at 0x420d30
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x38
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0x1c1b1a19
mov word [esp + 0x1c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x420d8e
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x18]
add eax, 0x4996fb31
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xd7
mov ecx, dword [esp]
mov byte [esp + ecx + 0x18], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x420d60
mov eax, dword [esp + 0x18]
mov ecx, dword [0x44996c]
test ecx, ecx
je 0x420de4
xor edx, edx
mov esi, dword [0x449970]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xcecd21fd
je 0x420dc0
inc edx
cmp ecx, edx
jne 0x420db0
jmp 0x420de4
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x420de4
lea eax, [esp + 0x14]
push eax
push 0
push 0
push 5
push 4
push dword [0x449974]
push ecx
call fcn.0043c800
add esp, 0x1c
cmp eax, 0xc0000004
jne 0x420e80
push dword [esp + 0x14]
call fcn.0043a6f0
add esp, 4
mov ebp, eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x18], 0x1c1b1a19
mov word [esp + 0x1c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x420e4e
nop
mov eax, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x18]
add eax, 0x4996fb31
xor eax, edx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xd7
mov edx, dword [esp]
mov byte [esp + edx + 0x18], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x420e20
mov eax, dword [esp + 0x18]
mov edx, dword [0x44996c]
test edx, edx
je 0x420ea6
xor esi, esi
mov edi, dword [0x449970]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + esi*8], 0xcecd21fd
je 0x420e87
inc esi
cmp edx, esi
jne 0x420e70
jmp 0x420ea6
xor ebx, ebx
jmp 0x42119d
mov edx, dword [edi + esi*8 + 4]
cmp edx, eax
je 0x420ea6
push 0
push ecx
push ebp
push 5
push 4
push dword [0x449974]
push edx
call fcn.0043c800
add esp, 0x1c
xor ebx, ebx
test eax, eax
js 0x421194
mov edi, dword [ebp]
mov eax, edi
mov ecx, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea edx, [ecx + eax]
inc ebx
mov eax, dword [ecx + eax]
mov ecx, edx
test eax, eax
jne 0x420ec0
mov eax, ebx
and eax, 0xfffffefb
mov ecx, ebx
and ecx, 0x104
or ebx, 0x104
imul ebx, ecx
xor ecx, 0x104
imul ecx, eax
add ebx, ecx
mov dword [esp + 0x10], ebp
jns 0x420efd
mov ebx, 0xffffffff
jmp 0x420eff
add ebx, ebx
push ebx
call fcn.0040a300
add esp, 4
mov ebp, eax
mov dword [esp + 4], eax
mov eax, dword [esp + 0x10]
jmp 0x420f32
mov esi, ebp
add eax, edi
lea ebp, [esi + 2]
mov word [esi], 0xa
mov edi, dword [eax]
test edi, edi
je 0x420f63
mov ecx, dword [eax + edi + 0x3c]
movzx edx, word [ecx]
test dx, dx
je 0x420f20
add ecx, 2
mov esi, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], dx
add esi, 2
movzx edx, word [ecx]
add ecx, 2
test dx, dx
jne 0x420f50
jmp 0x420f22
xor ebx, ebx
mov eax, dword [esp + 4]
cmp ebp, eax
je 0x421187
mov word [ebp], 0
movzx ecx, word [eax]
test cx, cx
je 0x420fc4
xor ebx, ebx
mov eax, dword [esp + 4]
jmp 0x420f9e
add ebx, edx
movzx ecx, word [eax + 2]
add eax, 2
test cx, cx
je 0x420fc4
cmp eax, ebp
jae 0x420fc4
movzx edi, cx
cmp edi, 0x800
mov ecx, 3
sbb ecx, 0
mov edx, 1
cmp edi, 0x80
jb 0x420f90
mov edx, ecx
jmp 0x420f90
lea eax, [ebx + 1]
mov dword [esp + 0x30], eax
push eax
call fcn.0040a300
add esp, 4
mov dword [esp + 0xc], eax
test ebx, ebx
jle 0x4210e5
mov eax, dword [esp + 0xc]
cmp dword [esp + 4], ebp
jae 0x4210e5
mov eax, dword [esp + 0xc]
lea edi, [eax + ebx]
add dword [esp + 0x30], eax
mov ecx, dword [esp + 4]
mov dword [esp + 0x2c], edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [ecx]
test dx, dx
je 0x4210e5
cmp dx, 0x7f
mov dword [esp + 0x34], ecx
ja 0x421040
mov byte [eax], dl
mov ebp, 1
jmp 0x4210d0
mov edi, dword [esp + 0x30]
sub edi, eax
mov ecx, edi
not ecx
and ecx, 1
and edi, 0xfffffffe
sub edi, ecx
movzx ecx, dx
cmp edi, 2
jb 0x421090
cmp ecx, 0x7ff
ja 0x421090
mov ecx, edx
shr ecx, 6
add cl, 0xc0
mov byte [eax], cl
mov ecx, edx
not ecx
or ecx, 0x3f
add ecx, edx
add cl, 0x81
mov byte [eax + 1], cl
mov ebp, 2
mov edi, dword [esp + 0x2c]
jmp 0x4210d0
xor ebp, ebp
cmp edi, 3
mov edi, dword [esp + 0x2c]
jb 0x4210d0
mov ebp, ecx
shr ecx, 0xc
or cl, 0xe0
mov byte [eax], cl
mov ecx, ebp
shr ecx, 6
and cl, 0x3f
or cl, 0x80
mov byte [eax + 1], cl
and dl, 0x3f
or dl, 0x80
mov byte [eax + 2], dl
mov ebp, 3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
add eax, ebp
cmp eax, edi
jae 0x4210e5
mov edx, dword [esp + 0x34]
lea ecx, [edx + 2]
cmp edx, esi
jb 0x421010
mov byte [eax], 0
mov dword [esp + 0x18], 0xc796304
mov dword [esp + 0x1c], 0xa797e0d
mov dword [esp + 0x20], 0x6b763f7b
mov word [esp + 0x24], 0xe174
mov dword [esp + 0x26], 0
mov byte [esp + 0x2a], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x12
ja 0x42115e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x18]
add eax, 0xd4ad082e
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x26
mov ecx, dword [esp]
mov byte [esp + ecx + 0x18], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x13
jb 0x421130
lea eax, [esp + 0x18]
mov ecx, dword [esp + 0x4c]
push ebx
mov esi, dword [esp + 0x10]
push esi
push eax
call fcn.0040ac30
mov ebx, eax
push esi
call fcn.0040a310
add esp, 4
mov ebp, dword [esp + 0x10]
mov eax, dword [esp + 4]
jmp 0x42118b
mov ebp, dword [esp + 0x10]
push eax
call fcn.0040a310
add esp, 4
push ebp
call fcn.0043a780
add esp, 4
mov eax, ebx
add esp, 0x38
pop esi
pop edi
pop ebx
pop ebp
ret