Function at 0x100a5843
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov eax, 0xffffffea
push edi
push esi
push ebx
sub esp, 0x94
cmp dword [esp + 0xb0], 0
mov ebp, dword [esp + 0xa8]
mov esi, dword [esp + 0xac]
js 0x100a610c
cmp dword [esp + 0xb0], 0x80
lea edx, [esp + 0x74]
jg 0x100a5896
mov ecx, 8
xor eax, eax
mov dword [ebp + 0xb0], 2
mov edi, edx
rep stosd dword es:[edi], eax
jmp 0x100a58dc
cmp dword [esp + 0xb0], 0xc0
jg 0x100a58ba
mov ecx, 8
xor eax, eax
mov dword [ebp + 0xb0], 3
mov edi, edx
rep stosd dword es:[edi], eax
jmp 0x100a58dc
xor eax, eax
mov ecx, 8
cmp dword [esp + 0xb0], 0x100
mov edi, edx
rep stosd dword es:[edi], eax
mov dword [ebp + 0xb0], 4
jg 0x100a58ec
mov ecx, dword [esp + 0xb0]
mov edi, edx
sar ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x100a58f5
mov ecx, 8
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 0xb0]
xor ebx, ebx
mov dword [esp + 8], eax
lea eax, [esp + 0x54]
mov esi, dword [esp + 8]
mov edi, eax
mov eax, dword [esp + 8]
lea ecx, [esi + esi]
mov esi, edx
lea eax, [ebp + eax*4]
test ecx, ecx
mov dword [esp + 0x1c], eax
cmovs ecx, ebx
shl ecx, 2
rep movsb byte es:[edi], byte [esi]
xor edi, edi
cmp dword [esp + 8], edi
jle 0x100a5fce
mov ebx, dword [esp + edi*8 + 0x54]
xor ecx, ecx
mov dl, 0xa4
mov eax, dword [esp + edi*8 + 0x58]
mov dword [esp + edi*4 + 0x34], ebx
mov dword [esp + 0x14], eax
mov dword [esp + edi*4 + 0x44], eax
movzx eax, bh
mov dword [esp], eax
mov byte [esp + 0x22], bl
mov al, byte [esp]
mov dword [esp + 4], ebx
test dl, dl
je 0x100a597d
test al, al
je 0x100a597d
mov bl, dl
and bl, 1
je 0x100a596c
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5977
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a595b
mov ebx, dword [esp + 4]
mov dl, 0x55
xor cl, byte [esp + 0x22]
mov dword [esp + 0x10], ebx
mov eax, ebx
mov byte [esp + 4], cl
shr eax, 0x10
xor ecx, ecx
mov byte [esp + 0xf], al
test dl, dl
je 0x100a59bc
test al, al
je 0x100a59bc
mov bl, dl
and bl, 1
je 0x100a59ab
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a59b6
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a599a
mov ebx, dword [esp + 0x10]
xor edx, edx
mov al, 0x87
xor cl, byte [esp + 4]
mov byte [esp + 4], cl
shr ebx, 0x18
mov byte [esp + 0x10], bl
test al, al
je 0x100a59f5
test bl, bl
je 0x100a59f5
mov cl, al
and cl, 1
je 0x100a59e4
xor dl, bl
mov cl, bl
add cl, cl
test bl, bl
jns 0x100a59ef
xor cl, 0x4d
shr al, 1
mov bl, cl
jmp 0x100a59d3
mov al, byte [esp + 0x14]
xor ecx, ecx
xor dl, byte [esp + 4]
mov byte [esp + 0x20], al
mov byte [esp + 4], dl
mov dl, 0x5a
test dl, dl
je 0x100a5a2b
test al, al
je 0x100a5a2b
mov bl, dl
and bl, 1
je 0x100a5a1a
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5a25
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5a09
mov eax, dword [esp + 0x14]
mov dl, 0x58
xor cl, byte [esp + 4]
mov byte [esp + 0x21], cl
movzx eax, ah
xor ecx, ecx
mov dword [esp + 4], eax
mov al, byte [esp + 4]
test dl, dl
je 0x100a5a68
test al, al
je 0x100a5a68
mov bl, dl
and bl, 1
je 0x100a5a57
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5a62
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5a46
mov eax, dword [esp + 0x14]
mov dl, 0xdb
xor cl, byte [esp + 0x21]
mov byte [esp + 0x23], cl
shr eax, 0x10
xor ecx, ecx
mov byte [esp + 0x21], al
test dl, dl
je 0x100a5aa1
test al, al
je 0x100a5aa1
mov bl, dl
and bl, 1
je 0x100a5a90
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5a9b
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5a7f
mov eax, dword [esp + 0x14]
mov dl, 0x9e
xor cl, byte [esp + 0x23]
mov byte [esp + 0x23], cl
shr eax, 0x18
xor ecx, ecx
mov byte [esp + 0x14], al
test dl, dl
je 0x100a5ada
test al, al
je 0x100a5ada
mov bl, dl
and bl, 1
je 0x100a5ac9
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5ad4
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5ab8
mov eax, dword [esp + 0x18]
xor ebx, ebx
mov dl, 0xa4
mov al, cl
xor al, byte [esp + 0x23]
mov dword [esp + 0x18], eax
mov al, byte [esp + 0x22]
test dl, dl
je 0x100a5b12
test al, al
je 0x100a5b12
mov cl, dl
and cl, 1
je 0x100a5b01
xor bl, al
mov cl, al
add cl, cl
test al, al
jns 0x100a5b0c
xor cl, 0x4d
shr dl, 1
mov al, cl
jmp 0x100a5af0
mov al, byte [esp]
xor ecx, ecx
mov dl, 0x56
mov byte [esp + 0x23], bl
test dl, dl
je 0x100a5b3f
test al, al
je 0x100a5b3f
mov bl, dl
and bl, 1
je 0x100a5b2e
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5b39
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5b1d
mov al, byte [esp + 0x23]
mov dl, 0x82
xor al, cl
xor ecx, ecx
mov byte [esp + 0x23], al
mov al, byte [esp + 0xf]
test dl, dl
je 0x100a5b73
test al, al
je 0x100a5b73
mov bl, dl
and bl, 1
je 0x100a5b62
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5b6d
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5b51
xor cl, byte [esp + 0x23]
mov dl, 0xf3
mov al, byte [esp + 0x10]
mov byte [esp + 0x23], cl
xor ecx, ecx
test dl, dl
je 0x100a5ba5
test al, al
je 0x100a5ba5
mov bl, dl
and bl, 1
je 0x100a5b94
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5b9f
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5b83
xor cl, byte [esp + 0x23]
mov dl, 0x1e
mov al, byte [esp + 0x20]
mov byte [esp + 0x23], cl
xor ecx, ecx
test dl, dl
je 0x100a5bd7
test al, al
je 0x100a5bd7
mov bl, dl
and bl, 1
je 0x100a5bc6
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5bd1
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5bb5
xor cl, byte [esp + 0x23]
mov dl, 0xc6
mov al, byte [esp + 4]
mov byte [esp + 0x23], cl
xor ecx, ecx
test dl, dl
je 0x100a5c09
test al, al
je 0x100a5c09
mov bl, dl
and bl, 1
je 0x100a5bf8
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5c03
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5be7
xor cl, byte [esp + 0x23]
mov dl, 0x68
mov al, byte [esp + 0x21]
mov byte [esp + 0x23], cl
xor ecx, ecx
test dl, dl
je 0x100a5c3b
test al, al
je 0x100a5c3b
mov bl, dl
and bl, 1
je 0x100a5c2a
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5c35
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5c19
xor cl, byte [esp + 0x23]
mov dl, 0xe5
mov al, byte [esp + 0x14]
mov byte [esp + 0x23], cl
xor ecx, ecx
test dl, dl
je 0x100a5c6d
test al, al
je 0x100a5c6d
mov bl, dl
and bl, 1
je 0x100a5c5c
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5c67
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5c4b
mov al, byte [esp + 0x23]
xor ebx, ebx
mov edx, dword [esp + 0x18]
xor al, cl
mov dh, al
mov al, byte [esp + 0x22]
mov dword [esp + 0x18], edx
mov dl, 2
test dl, dl
je 0x100a5ca5
test al, al
je 0x100a5ca5
cmp dl, 1
jne 0x100a5c94
xor bl, al
mov cl, al
add cl, cl
test al, al
jns 0x100a5c9f
xor cl, 0x4d
shr dl, 1
mov al, cl
jmp 0x100a5c85
mov al, byte [esp]
xor ecx, ecx
mov dl, 0xa1
mov byte [esp + 0x23], bl
test dl, dl
je 0x100a5cd2
test al, al
je 0x100a5cd2
mov bl, dl
and bl, 1
je 0x100a5cc1
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5ccc
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5cb0
mov al, byte [esp + 0x23]
mov dl, 0xfc
xor al, cl
xor ecx, ecx
mov byte [esp + 0x23], al
mov al, byte [esp + 0xf]
test dl, dl
je 0x100a5d06
test al, al
je 0x100a5d06
mov bl, dl
and bl, 1
je 0x100a5cf5
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5d00
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5ce4
xor cl, byte [esp + 0x23]
mov dl, 0xc1
mov al, byte [esp + 0x10]
mov byte [esp + 0x23], cl
xor ecx, ecx
test dl, dl
je 0x100a5d38
test al, al
je 0x100a5d38
mov bl, dl
and bl, 1
je 0x100a5d27
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5d32
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5d16
xor cl, byte [esp + 0x23]
mov dl, 0x47
mov al, byte [esp + 0x20]
mov byte [esp + 0x23], cl
xor ecx, ecx
test dl, dl
je 0x100a5d6a
test al, al
je 0x100a5d6a
mov bl, dl
and bl, 1
je 0x100a5d59
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5d64
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5d48
xor cl, byte [esp + 0x23]
mov dl, 0xae
mov al, byte [esp + 4]
mov byte [esp + 0x23], cl
xor ecx, ecx
test dl, dl
je 0x100a5d9c
test al, al
je 0x100a5d9c
mov bl, dl
and bl, 1
je 0x100a5d8b
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5d96
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5d7a
xor cl, byte [esp + 0x23]
mov dl, 0x3d
mov al, byte [esp + 0x21]
mov byte [esp + 0x23], cl
xor ecx, ecx
test dl, dl
je 0x100a5dce
test al, al
je 0x100a5dce
mov bl, dl
and bl, 1
je 0x100a5dbd
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5dc8
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5dac
xor cl, byte [esp + 0x23]
mov dl, 0x19
mov al, byte [esp + 0x14]
mov byte [esp + 0x23], cl
xor ecx, ecx
test dl, dl
je 0x100a5e00
test al, al
je 0x100a5e00
mov bl, dl
and bl, 1
je 0x100a5def
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a5dfa
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a5dde
mov edx, dword [esp + 0x18]
mov al, byte [esp + 0x23]
and edx, 0xff00ffff
xor al, cl
mov esi, edx
mov dl, byte [esp + 0x22]
movzx eax, al
xor ecx, ecx
shl eax, 0x10
or esi, eax
mov al, 0xa4
test al, al
je 0x100a5e44
test dl, dl
je 0x100a5e44
mov bl, al
and bl, 1
je 0x100a5e33
xor cl, dl
mov bl, dl
add bl, bl
test dl, dl
jns 0x100a5e3e
xor bl, 0x4d
shr al, 1
mov dl, bl
jmp 0x100a5e22
xor eax, eax
mov dl, 0x55
test dl, dl
je 0x100a5e71
cmp byte [esp], 0
je 0x100a5e71
mov bl, dl
and bl, 1
je 0x100a5e5c
xor al, byte [esp]
mov bl, byte [esp]
add bl, bl
cmp byte [esp], 0
jns 0x100a5e6a
xor bl, 0x4d
mov byte [esp], bl
shr dl, 1
jmp 0x100a5e48
xor al, cl
mov dl, 0x87
xor ecx, ecx
test dl, dl
je 0x100a5ea5
cmp byte [esp + 0xf], 0
je 0x100a5ea5
mov bl, dl
and bl, 1
je 0x100a5e8d
xor cl, byte [esp + 0xf]
mov bl, byte [esp + 0xf]
add bl, bl
cmp byte [esp + 0xf], 0
jns 0x100a5e9d
xor bl, 0x4d
mov byte [esp + 0xf], bl
shr dl, 1
jmp 0x100a5e77
xor al, cl
mov dl, 0x5a
xor ecx, ecx
test dl, dl
je 0x100a5ed9
cmp byte [esp + 0x10], 0
je 0x100a5ed9
mov bl, dl
and bl, 1
je 0x100a5ec1
xor cl, byte [esp + 0x10]
mov bl, byte [esp + 0x10]
add bl, bl
cmp byte [esp + 0x10], 0
jns 0x100a5ed1
xor bl, 0x4d
mov byte [esp + 0x10], bl
shr dl, 1
jmp 0x100a5eab
xor al, cl
xor edx, edx
mov bl, 0x58
test bl, bl
je 0x100a5f0d
cmp byte [esp + 0x20], 0
je 0x100a5f0d
mov cl, bl
and cl, 1
je 0x100a5ef5
xor dl, byte [esp + 0x20]
mov cl, byte [esp + 0x20]
add cl, cl
cmp byte [esp + 0x20], 0
jns 0x100a5f05
xor cl, 0x4d
mov byte [esp + 0x20], cl
shr bl, 1
jmp 0x100a5edf
xor al, dl
mov bl, 0xdb
xor edx, edx
test bl, bl
je 0x100a5f41
cmp byte [esp + 4], 0
je 0x100a5f41
mov cl, bl
and cl, 1
je 0x100a5f29
xor dl, byte [esp + 4]
mov cl, byte [esp + 4]
add cl, cl
cmp byte [esp + 4], 0
jns 0x100a5f39
xor cl, 0x4d
mov byte [esp + 4], cl
shr bl, 1
jmp 0x100a5f13
xor dl, al
xor ebx, ebx
mov cl, 0x9e
test cl, cl
je 0x100a5f73
cmp byte [esp + 0x21], 0
je 0x100a5f73
mov al, cl
and al, 1
je 0x100a5f5c
xor bl, byte [esp + 0x21]
mov al, byte [esp + 0x21]
add al, al
cmp byte [esp + 0x21], 0
jns 0x100a5f6b
xor al, 0x4d
mov byte [esp + 0x21], al
shr cl, 1
jmp 0x100a5f47
mov al, byte [esp + 0x14]
xor dl, bl
xor ecx, ecx
mov byte [esp], dl
mov bl, 3
test bl, bl
je 0x100a5f9e
test al, al
je 0x100a5f9e
mov dl, al
xor cl, al
add dl, dl
test al, al
jns 0x100a5f98
mov al, dl
xor al, 0x4d
mov dl, al
shr bl, 1
mov al, dl
jmp 0x100a5f80
mov dl, byte [esp]
and esi, 0xffffff
inc edi
xor dl, cl
movzx edx, dl
mov eax, edx
mov edx, esi
shl eax, 0x18
or edx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], edx
sub dword [esp + 0x1c], 4
mov dword [eax + 0x9c], edx
jmp 0x100a5928
lea esi, [ebp + 0xa0]
xor ebx, ebx
mov ecx, dword [esp + 8]
lea eax, [esp + 0x30]
mov edx, esi
mov byte [esp + 0x33], bl
mov byte [esp + 0x32], bl
mov byte [esp + 0x31], bl
mov byte [esp + 0x30], bl
call fcn.100a566c
movzx ecx, byte [esp + 0x30]
movzx edx, byte [ecx + 0x100bc900]
movzx eax, byte [ecx + 0x100bca00]
mov edi, edx
shl eax, 8
shl edi, 0x10
shl edx, 0x18
xor eax, edi
xor eax, ecx
xor eax, edx
movzx edx, byte [esp + 0x31]
mov dword [ebp + ebx*4 + 0xb4], eax
movzx eax, byte [edx + 0x100bc900]
movzx ecx, byte [edx + 0x100bca00]
shl edx, 0x18
imul eax, eax, 0x101
shl ecx, 0x10
xor eax, ecx
movzx ecx, byte [esp + 0x32]
xor eax, edx
mov dword [ebp + ebx*4 + 0x4b4], eax
movzx edx, byte [ecx + 0x100bc900]
movzx eax, byte [ecx + 0x100bca00]
shl ecx, 0x10
xor eax, ecx
mov ecx, edx
shl ecx, 8
shl edx, 0x18
xor eax, ecx
movzx ecx, byte [esp + 0x33]
xor eax, edx
mov dword [ebp + ebx*4 + 0x8b4], eax
movzx edx, byte [ecx + 0x100bca00]
mov eax, ecx
movzx ecx, byte [ecx + 0x100bc900]
shl eax, 8
xor eax, edx
shl ecx, 0x10
shl edx, 0x18
xor eax, ecx
xor eax, edx
mov dword [ebp + ebx*4 + 0xcb4], eax
inc ebx
cmp ebx, 0x100
jne 0x100a5fd6
add ebp, 4
xor esi, esi
mov ecx, dword [esp + 8]
lea edx, [esp + 0x34]
mov eax, esi
add ebp, 8
call fcn.100a57a5
mov ecx, dword [esp + 8]
lea edx, [esp + 0x44]
mov ebx, eax
lea eax, [esi + 0x1010101]
add esi, 0x2020202
call fcn.100a57a5
rol eax, 8
lea edx, [ebx + eax]
mov dword [ebp - 0xc], edx
add edx, eax
rol edx, 9
mov dword [ebp - 8], edx
cmp esi, 0x28282828
jne 0x100a60b2
mov eax, dword [esp + 8]
shl eax, 6
cmp eax, dword [esp + 0xb0]
setne al
movzx eax, al
add esp, 0x94
pop ebx
pop esi
pop edi
pop ebp
ret