Function at 0x435150
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x60
mov dword [esp + 0x18], 0xfb4df9e1
mov dword [esp + 0x1c], 0xff69fd71
mov dword [esp + 0x20], 0xf357f16a
mov dword [esp + 0x24], 0xf7b0f56d
mov dword [esp + 0x28], 0xeb73e964
mov dword [esp + 0x2c], 0xef4bed7c
mov dword [esp + 0x30], 0xe3e0e189
lea eax, [esp + 0x34]
mov dword [esp], eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x23
ja 0x43521c
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x18]
lea esi, [eax - 0x28f23d41]
mov edi, 0x40
sub edi, eax
and edi, esi
lea esi, [eax + ecx]
add esi, 0xd70dc2bf
add eax, 0xbf
and eax, ecx
and edi, ecx
lea eax, [edi + eax*2]
mov ecx, eax
xor ecx, esi
not eax
and eax, esi
add eax, eax
sub eax, ecx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
add al, 0xc7
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x18], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x24
jb 0x4351c0
mov esi, dword [ebp + 8]
lea eax, [esp + 0x40]
lea ebx, [esp + 0x18]
mov edx, ebx
mov ecx, 7
mov edi, eax
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x5c]
xor ecx, ecx
mov edx, dword [esp]
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
lea ecx, [esp + 8]
push ecx
push 8
push ebx
push 0xd
push eax
push 0
call dword [0x449c84]
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x44746c]
mov dword [esp + 0x18], 0x3a0043
jmp dword [0x447478]
jmp dword [0x447478]
mov dword [esp + 0x1c], 0x5c
mov dword [esp + 4], 0
push 0x8111c430
push dword [0x449c7c]
call fcn.0043bf80
add esp, 8
lea ecx, [esp + 4]
push 0
push 0
push 0
push 0
push ecx
push 0
push 0
push ebx
call eax
mov dword [esp + 0x1c], 0x5c
mov dword [esp + 4], 0
push 0x8111c430
push dword [0x449c7c]
call fcn.0043bf80
add esp, 8
lea edi, [esp + 4]
push 0
push 0
push 0
push 0
push edi
push 0
push 0
push ebx
call eax
jmp dword [0x447480]
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x447484]
xor eax, eax
xor ecx, ecx
cmp eax, 4
setb cl
jmp dword [ecx*4 + 0x44748c]
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x447494]
lea ecx, [esp + eax*4]
add ecx, 4
jmp 0x435332
mov ecx, edi
imul edx, dword [ecx], 0x1a5845
lea ecx, [esi + 8]
add edx, 0xebde8a13
mov dword [esp + eax*4 + 8], edx
mov byte [esi + 8], 0
mov dword [esp], ecx
je 0x4353a0
cmp edx, 0x100
jb 0x4353b0
mov esi, ecx
mov ebx, edx
nop
nop
nop
nop
nop
nop
movzx ecx, dl
movzx ecx, word [ecx + ecx + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
mov word [esi - 2], cx
add esi, 0xfffffffe
shr ebx, 8
cmp edx, 0xffff
mov edx, ebx
ja 0x435360
cmp ebx, 0xf
ja 0x4353b9
movzx ecx, byte [ebx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esi - 1], cl
dec esi
jmp 0x4353c8
mov byte [esi + 7], 0x30
add esi, 7
jmp 0x4353c8
mov ebx, edx
mov esi, ecx
cmp ebx, 0xf
jbe 0x435384
movzx ecx, word [ebx + ebx + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
mov word [esi - 2], cx
add esi, 0xfffffffe
mov edx, 0xfffffff7
nop
nop
nop
cmp byte [esi + edx + 9], 0
lea edx, [edx + 1]
jne case.default.0x4353e3
xor ebx, ebx
xor ecx, ecx
cmp edx, ebx
setne cl
jmp dword [ecx*4 + 0x44749c]
mov byte [esi + ebx - 1], 0x30
dec ebx
xor ecx, ecx
cmp edx, ebx
setne cl
jmp dword [ecx*4 + 0x44749c]
inc eax
xor edx, edx
cmp eax, 4
setb dl
mov esi, dword [esp]
jmp dword [edx*4 + 0x44748c]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor eax, eax
jmp 0x4355ee
jmp dword [0x4474b0]
mov esi, dword [esp + 0x24]
lea ecx, [esp + 8]
call fcn.00439250
inc ebx
xor eax, eax
cmp ebx, dword [esi]
setb al
jmp dword [eax*4 + 0x4474e4]
mov eax, dword [esi + ebx*4 + 4]
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
lea ecx, [esp + 8]
push 0
push eax
call fcn.004390f0
xor eax, eax
mov edi, dword [ebp + 0xc]
mov ecx, edi
neg ecx
mov esi, dword [ebp + 0x10]
sbb eax, esi
setl al
movzx eax, al
shl eax, 0x14
or eax, 1
lea ecx, [esp + 8]
push eax
call fcn.00439110
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x4474ec]
lea ecx, [esp + 8]
push esi
push edi
push 0
call fcn.00439330
mov ecx, dword [0x4474fc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x20], 0
cmp ecx, dword [esi]
setb al
xor ebx, ebx
jmp dword [eax*4 + 0x4474e4]
push esi
call fcn.00438e10
add esp, 4
mov eax, dword [esp + 0x28]
mov dword [esp + 8], 0x4a555457
mov dword [esp + 0xc], 0
mov word [esp + 0x10], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 9
ja 0x43559c
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 8]
lea esi, [ecx + edx]
add esi, 0x89ba434d
add ecx, 0x89ba434d
and ecx, edx
add ecx, ecx
mov edx, ecx
xor edx, esi
not ecx
and ecx, esi
add ecx, ecx
sub ecx, edx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x1c]
add cl, 0xe5
mov edx, dword [esp + 4]
mov byte [esp + edx + 8], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xa
jb 0x435550
mov ecx, dword [0x449c88]
test ecx, ecx
je 0x4355ea
mov edx, dword [esp + 8]
xor esi, esi
mov edi, dword [0x449c8c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + esi*8], 0xad91fd63
je 0x4355d0
inc esi
cmp ecx, esi
jne 0x4355c0
jmp 0x4355ea
mov ecx, dword [edi + esi*8 + 4]
cmp ecx, edx
je 0x4355ea
push eax
push 1
push dword [0x449c90]
push ecx
call fcn.0043a6a0
add esp, 0x10
mov eax, dword [esp + 0x20]
and al, 1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
not eax
shr eax, 0x1f
mov dword [esp + 0x20], 0
jmp dword [eax*4 + 0x4474cc]
mov eax, dword [case.0x43525e.28]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
push 0x400
call fcn.00438d50
add esp, 4
push 0x400
call fcn.00438d50
add esp, 4
jmp dword [0x4474b8]
mov esi, eax
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x24], eax
jmp dword [0x4474c0]
mov dword [esp + 8], 0x4a555457
mov dword [esp + 0xc], 0
mov word [esp + 0x10], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 9
ja 0x4356ca
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 8]
lea edx, [eax + ecx]
add edx, 0x89ba434d
add eax, 0x89ba434d
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
add al, 0xe5
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 8], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xa
jb 0x435680
mov eax, dword [0x449c88]
test eax, eax
je case.0x43525e.21
mov ecx, dword [esp + 8]
xor edx, edx
mov edi, dword [0x449c8c]
nop
cmp dword [edi + edx*8], 0x47995699
je 0x4356f0
inc edx
cmp eax, edx
jne 0x4356e0
jmp case.0x43525e.21
mov eax, dword [edi + edx*8 + 4]
cmp eax, ecx
je case.0x43525e.21
lea ecx, [esp + 0x2c]
push 0x2f
push 0x400
push esi
push ecx
push ebx
push 5
push dword [0x449c90]
push eax
call fcn.0043a6a0
add esp, 0x20
mov dword [esp + 8], 0x4a555457
mov dword [esp + 0xc], 0
mov word [esp + 0x10], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 9
ja 0x43578a
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 8]
lea edx, [eax + ecx]
add edx, 0x89ba434d
add eax, 0x89ba434d
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
add al, 0xe5
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 8], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xa
jb 0x435740
mov eax, dword [esp + 8]
mov ecx, dword [0x449c88]
test ecx, ecx
je 0x4357b8
xor edx, edx
mov edi, dword [0x449c8c]
cmp dword [edi + edx*8], 0x47995699
je 0x4357b0
inc edx
cmp ecx, edx
jne 0x4357a0
jmp 0x4357b8
mov ecx, dword [edi + edx*8 + 4]
cmp ecx, eax
jne 0x4357be
jmp dword [0x4474c8]
lea eax, [esp + 0x2c]
push 0x2f
push 0x400
push esi
push eax
push ebx
push 5
push dword [0x449c90]
push ecx
call fcn.0043a6a0
add esp, 0x20
jmp dword [0x4474c8]