Function at 0x40bd00
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
mov eax, dword [0x6baac0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
mov ecx, eax
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x3c], eax
call fcn.00422240
test esi, esi
je 0x40c1ac
test edi, edi
je 0x40c1ac
mov ecx, edi
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40bd40
sub ecx, edx
cmp ecx, 8
jb 0x40c1ac
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40bd57
sub ecx, edx
cmp ecx, 9
jb 0x40c1ac
push 0x10
lea eax, [ebp - 0x1c]
push edi
push eax
call fcn.0040fb00
movsx edx, byte [esi + 1]
add esp, 0xc
movsx eax, byte [esi]
mov ecx, edx
sub ecx, eax
mov byte [ebp - 0xc], 0
movsx eax, byte [esi + 2]
mov edi, ecx
neg edi
test ecx, ecx
cmovns edi, ecx
sub eax, edx
mov ecx, eax
neg ecx
test eax, eax
cmovns ecx, eax
neg edi
jns 0x40bda7
add edi, ecx
jmp 0x40bda9
sub edi, ecx
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
sub ecx, eax
mov eax, ecx
neg eax
test ecx, ecx
cmovns eax, ecx
test edi, edi
jns 0x40bdc4
add edi, eax
jmp 0x40bdc6
sub edi, eax
movsx eax, byte [esi + 3]
movsx ecx, byte [esi + 4]
sub ecx, eax
mov eax, ecx
neg eax
test ecx, ecx
cmovns eax, ecx
test edi, edi
jns 0x40bde1
add edi, eax
jmp 0x40bde3
sub edi, eax
movsx eax, byte [esi + 4]
movsx ecx, byte [esi + 5]
sub ecx, eax
mov eax, ecx
neg eax
test ecx, ecx
cmovns eax, ecx
test edi, edi
jns 0x40bdfe
add edi, eax
jmp 0x40be00
sub edi, eax
movsx eax, byte [esi + 5]
movsx ecx, byte [esi + 6]
sub ecx, eax
mov eax, ecx
neg eax
test ecx, ecx
cmovns eax, ecx
test edi, edi
jns 0x40be1b
add edi, eax
jmp 0x40be1d
sub edi, eax
movsx eax, byte [esi + 6]
movsx ecx, byte [esi + 7]
sub ecx, eax
mov eax, ecx
neg eax
test ecx, ecx
cmovns eax, ecx
test edi, edi
jns 0x40be38
add edi, eax
jmp 0x40be3a
sub edi, eax
mov eax, edi
cdq
xor eax, edx
sub eax, edx
lea ecx, [eax + 0x30]
cmp ecx, 0x30
jl 0x40be4e
cmp ecx, 0x39
jle 0x40be8c
cmp ecx, 0x61
jl 0x40be58
cmp ecx, 0x7a
jle 0x40be8c
cmp ecx, 0x41
jl 0x40be62
cmp ecx, 0x5a
jle 0x40be8c
mov ecx, 0x7a
sub ecx, eax
cmp ecx, 0x30
jl 0x40be73
cmp ecx, 0x39
jle 0x40be8c
cmp ecx, 0x61
jl 0x40be7d
cmp ecx, 0x7a
jle 0x40be8c
cmp ecx, 0x41
jl 0x40be87
cmp ecx, 0x5a
jle 0x40be8c
mov ecx, 0x78
movsx eax, byte [esi + 7]
mov byte [ebp - 0x14], cl
movsx ecx, byte [esi + 8]
xor ecx, eax
mov dl, byte [ebp - 0x1c]
movsx eax, byte [esi + 6]
xor ecx, eax
movsx eax, byte [esi + 5]
xor ecx, eax
movsx eax, byte [esi + 4]
xor ecx, eax
movsx eax, byte [esi + 3]
xor ecx, eax
movsx eax, byte [esi + 2]
xor ecx, eax
movsx eax, byte [esi + 1]
xor ecx, eax
movsx eax, byte [esi]
xor ecx, eax
cmp ecx, 0x30
jge 0x40bece
movsx ecx, dl
inc ecx
mov al, byte [ebp - 0x1b]
cmp ecx, 0x7a
jle 0x40beda
movsx ecx, al
inc ecx
cmp ecx, 0x30
jl 0x40bee4
cmp ecx, 0x39
jle 0x40befd
cmp ecx, 0x61
jl 0x40beee
cmp ecx, 0x7a
jle 0x40befd
cmp ecx, 0x41
jl 0x40bef8
cmp ecx, 0x5a
jle 0x40befd
mov ecx, 0x52
movsx edi, al
mov byte [ebp - 0x13], cl
mov ecx, edi
movsx edx, dl
sub ecx, edx
mov dword [ebp - 0x2c], edx
mov eax, ecx
neg eax
test ecx, ecx
cmovns eax, ecx
movsx ecx, byte [ebp - 0x1a]
mov dword [ebp - 0x20], ecx
sub ecx, edi
mov edx, ecx
neg edx
test ecx, ecx
cmovns edx, ecx
neg eax
jns 0x40bf30
add eax, edx
jmp 0x40bf32
sub eax, edx
push ebx
movsx ebx, byte [ebp - 0x19]
mov ecx, ebx
mov dword [ebp - 0x34], ebx
sub ecx, dword [ebp - 0x20]
mov edx, ecx
neg edx
test ecx, ecx
cmovns edx, ecx
test eax, eax
jns 0x40bf50
add eax, edx
jmp 0x40bf52
sub eax, edx
movsx ecx, byte [ebp - 0x18]
mov dword [ebp - 0x24], ecx
sub ecx, ebx
mov edx, ecx
neg edx
test ecx, ecx
cmovns edx, ecx
test eax, eax
jns 0x40bf6c
add eax, edx
jmp 0x40bf6e
sub eax, edx
movsx ebx, byte [ebp - 0x17]
mov ecx, ebx
mov dword [ebp - 0x30], ebx
sub ecx, dword [ebp - 0x24]
mov edx, ecx
neg edx
test ecx, ecx
cmovns edx, ecx
test eax, eax
jns 0x40bf8b
add eax, edx
jmp 0x40bf8d
sub eax, edx
movsx ecx, byte [ebp - 0x16]
mov dword [ebp - 0x28], ecx
sub ecx, ebx
mov edx, ecx
neg edx
test ecx, ecx
cmovns edx, ecx
test eax, eax
jns 0x40bfa7
add eax, edx
jmp 0x40bfa9
sub eax, edx
movsx ecx, byte [ebp - 0x15]
mov dword [ebp - 0x38], ecx
sub ecx, dword [ebp - 0x28]
mov edx, ecx
neg edx
test ecx, ecx
cmovns edx, ecx
test eax, eax
jns 0x40bfc4
add eax, edx
jmp 0x40bfc6
sub eax, edx
movsx ebx, byte [esi + 2]
movsx ecx, byte [esi]
mov edx, ebx
sub edx, ecx
mov ecx, edx
neg ecx
test edx, edx
cmovns ecx, edx
test eax, eax
jns 0x40bfe2
add eax, ecx
jmp 0x40bfe4
sub eax, ecx
movsx ecx, byte [esi + 1]
movsx edx, byte [esi + 3]
sub edx, ecx
mov ecx, edx
neg ecx
test edx, edx
cmovns ecx, edx
test eax, eax
jns 0x40bfff
add eax, ecx
jmp 0x40c001
sub eax, ecx
movsx ecx, byte [esi + 4]
sub ecx, ebx
mov edx, ecx
neg edx
test ecx, ecx
cmovns edx, ecx
test eax, eax
jns 0x40c018
add eax, edx
jmp 0x40c01a
sub eax, edx
movsx ecx, byte [esi + 3]
movsx edx, byte [esi + 5]
sub edx, ecx
mov ecx, edx
neg ecx
test edx, edx
cmovns ecx, edx
test eax, eax
jns 0x40c035
add eax, ecx
jmp 0x40c037
sub eax, ecx
movsx ecx, byte [esi + 4]
movsx edx, byte [esi + 6]
sub edx, ecx
mov ecx, edx
neg ecx
test edx, edx
cmovns ecx, edx
test eax, eax
jns 0x40c052
add eax, ecx
jmp 0x40c054
sub eax, ecx
movsx ecx, byte [esi + 5]
movsx edx, byte [esi + 7]
sub edx, ecx
mov ecx, edx
neg ecx
test edx, edx
cmovns ecx, edx
test eax, eax
jns 0x40c06f
add eax, ecx
jmp 0x40c071
sub eax, ecx
movsx ecx, byte [esi + 6]
movsx edx, byte [esi + 8]
sub edx, ecx
mov ecx, edx
neg ecx
test edx, edx
cmovns ecx, edx
test eax, eax
jns 0x40c08c
add eax, ecx
jmp 0x40c08e
sub eax, ecx
movsx ecx, byte [esi + 7]
movsx edx, byte [esi + 9]
sub edx, ecx
mov ecx, edx
neg ecx
test edx, edx
cmovns ecx, edx
test eax, eax
jns 0x40c0a9
add eax, ecx
jmp 0x40c0ab
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
lea ecx, [eax + 0x30]
cmp ecx, 0x30
jl 0x40c0bd
cmp ecx, 0x39
jle 0x40c0fb
cmp ecx, 0x61
jl 0x40c0c7
cmp ecx, 0x7a
jle 0x40c0fb
cmp ecx, 0x41
jl 0x40c0d1
cmp ecx, 0x5a
jle 0x40c0fb
mov ecx, 0x7a
sub ecx, eax
cmp ecx, 0x30
jl 0x40c0e2
cmp ecx, 0x39
jle 0x40c0fb
cmp ecx, 0x61
jl 0x40c0ec
cmp ecx, 0x7a
jle 0x40c0fb
cmp ecx, 0x41
jl 0x40c0f6
cmp ecx, 0x5a
jle 0x40c0fb
mov ecx, 0x6e
mov byte [ebp - 0x12], cl
xor ecx, ecx
xor edx, edx
movsx eax, byte [esi + edx]
add edx, 2
xor ecx, eax
cmp edx, 0xa
jl 0x40c102
xor edi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x30]
xor edi, eax
xor edi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x34]
xor edi, ebx
mov edx, dword [ebp - 0x24]
xor edi, edx
xor edi, dword [ebp - 0x38]
xor edi, dword [ebp - 0x28]
xor ecx, edi
cmp ecx, 0x30
jge 0x40c135
lea ecx, [eax + 0x14]
cmp ecx, 0x7a
jle 0x40c140
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff6
cmp ecx, 0x30
jge 0x40c148
lea ecx, [ebx + 0x14]
pop ebx
cmp ecx, 0x7a
jle 0x40c151
lea ecx, [edx - 0xa]
cmp ecx, 0x30
jl 0x40c15b
cmp ecx, 0x39
jle 0x40c174
cmp ecx, 0x61
jl 0x40c165
cmp ecx, 0x7a
jle 0x40c174
cmp ecx, 0x41
jl 0x40c16f
cmp ecx, 0x5a
jle 0x40c174
mov ecx, 0x47
push esi
mov esi, dword [ebp - 0x3c]
mov byte [ebp - 0x11], cl
mov ecx, esi
mov byte [ebp - 0x10], 0
call fcn.00421120
push 0x5f
mov ecx, esi
call fcn.00421320
lea eax, [ebp - 0x1c]
mov ecx, esi
push eax
call fcn.00421120
pop edi
mov al, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.005ebe04
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
xor al, al
pop edi
xor ecx, ebp
pop esi
call fcn.005ebe04
mov esp, ebp
pop ebp
ret