Function at 0x100a8637
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 0x100a8f00
cmp dword [esp + 0xb0], 0x80
lea edx, [esp + 0x74]
jg 0x100a868a
mov ecx, 8
xor eax, eax
mov dword [ebp + 0xb0], 2
mov edi, edx
rep stosd dword es:[edi], eax
jmp 0x100a86d0
cmp dword [esp + 0xb0], 0xc0
jg 0x100a86ae
mov ecx, 8
xor eax, eax
mov dword [ebp + 0xb0], 3
mov edi, edx
rep stosd dword es:[edi], eax
jmp 0x100a86d0
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 0x100a86e0
mov ecx, dword [esp + 0xb0]
mov edi, edx
sar ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x100a86e9
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 0x100a8dc2
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 0x100a8771
test al, al
je 0x100a8771
mov bl, dl
and bl, 1
je 0x100a8760
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a876b
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a874f
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 0x100a87b0
test al, al
je 0x100a87b0
mov bl, dl
and bl, 1
je 0x100a879f
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a87aa
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a878e
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 0x100a87e9
test bl, bl
je 0x100a87e9
mov cl, al
and cl, 1
je 0x100a87d8
xor dl, bl
mov cl, bl
add cl, cl
test bl, bl
jns 0x100a87e3
xor cl, 0x4d
shr al, 1
mov bl, cl
jmp 0x100a87c7
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 0x100a881f
test al, al
je 0x100a881f
mov bl, dl
and bl, 1
je 0x100a880e
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a8819
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a87fd
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 0x100a885c
test al, al
je 0x100a885c
mov bl, dl
and bl, 1
je 0x100a884b
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a8856
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a883a
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 0x100a8895
test al, al
je 0x100a8895
mov bl, dl
and bl, 1
je 0x100a8884
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a888f
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a8873
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 0x100a88ce
test al, al
je 0x100a88ce
mov bl, dl
and bl, 1
je 0x100a88bd
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a88c8
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a88ac
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 0x100a8906
test al, al
je 0x100a8906
mov cl, dl
and cl, 1
je 0x100a88f5
xor bl, al
mov cl, al
add cl, cl
test al, al
jns 0x100a8900
xor cl, 0x4d
shr dl, 1
mov al, cl
jmp 0x100a88e4
mov al, byte [esp]
xor ecx, ecx
mov dl, 0x56
mov byte [esp + 0x23], bl
test dl, dl
je 0x100a8933
test al, al
je 0x100a8933
mov bl, dl
and bl, 1
je 0x100a8922
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a892d
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a8911
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 0x100a8967
test al, al
je 0x100a8967
mov bl, dl
and bl, 1
je 0x100a8956
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a8961
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a8945
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 0x100a8999
test al, al
je 0x100a8999
mov bl, dl
and bl, 1
je 0x100a8988
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a8993
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a8977
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 0x100a89cb
test al, al
je 0x100a89cb
mov bl, dl
and bl, 1
je 0x100a89ba
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a89c5
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a89a9
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 0x100a89fd
test al, al
je 0x100a89fd
mov bl, dl
and bl, 1
je 0x100a89ec
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a89f7
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a89db
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 0x100a8a2f
test al, al
je 0x100a8a2f
mov bl, dl
and bl, 1
je 0x100a8a1e
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a8a29
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a8a0d
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 0x100a8a61
test al, al
je 0x100a8a61
mov bl, dl
and bl, 1
je 0x100a8a50
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a8a5b
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a8a3f
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 0x100a8a99
test al, al
je 0x100a8a99
cmp dl, 1
jne 0x100a8a88
xor bl, al
mov cl, al
add cl, cl
test al, al
jns 0x100a8a93
xor cl, 0x4d
shr dl, 1
mov al, cl
jmp 0x100a8a79
mov al, byte [esp]
xor ecx, ecx
mov dl, 0xa1
mov byte [esp + 0x23], bl
test dl, dl
je 0x100a8ac6
test al, al
je 0x100a8ac6
mov bl, dl
and bl, 1
je 0x100a8ab5
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a8ac0
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a8aa4
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 0x100a8afa
test al, al
je 0x100a8afa
mov bl, dl
and bl, 1
je 0x100a8ae9
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a8af4
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a8ad8
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 0x100a8b2c
test al, al
je 0x100a8b2c
mov bl, dl
and bl, 1
je 0x100a8b1b
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a8b26
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a8b0a
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 0x100a8b5e
test al, al
je 0x100a8b5e
mov bl, dl
and bl, 1
je 0x100a8b4d
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a8b58
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a8b3c
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 0x100a8b90
test al, al
je 0x100a8b90
mov bl, dl
and bl, 1
je 0x100a8b7f
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a8b8a
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a8b6e
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 0x100a8bc2
test al, al
je 0x100a8bc2
mov bl, dl
and bl, 1
je 0x100a8bb1
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a8bbc
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a8ba0
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 0x100a8bf4
test al, al
je 0x100a8bf4
mov bl, dl
and bl, 1
je 0x100a8be3
xor cl, al
mov bl, al
add bl, bl
test al, al
jns 0x100a8bee
xor bl, 0x4d
shr dl, 1
mov al, bl
jmp 0x100a8bd2
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 0x100a8c38
test dl, dl
je 0x100a8c38
mov bl, al
and bl, 1
je 0x100a8c27
xor cl, dl
mov bl, dl
add bl, bl
test dl, dl
jns 0x100a8c32
xor bl, 0x4d
shr al, 1
mov dl, bl
jmp 0x100a8c16
xor eax, eax
mov dl, 0x55
test dl, dl
je 0x100a8c65
cmp byte [esp], 0
je 0x100a8c65
mov bl, dl
and bl, 1
je 0x100a8c50
xor al, byte [esp]
mov bl, byte [esp]
add bl, bl
cmp byte [esp], 0
jns 0x100a8c5e
xor bl, 0x4d
mov byte [esp], bl
shr dl, 1
jmp 0x100a8c3c
xor al, cl
mov dl, 0x87
xor ecx, ecx
test dl, dl
je 0x100a8c99
cmp byte [esp + 0xf], 0
je 0x100a8c99
mov bl, dl
and bl, 1
je 0x100a8c81
xor cl, byte [esp + 0xf]
mov bl, byte [esp + 0xf]
add bl, bl
cmp byte [esp + 0xf], 0
jns 0x100a8c91
xor bl, 0x4d
mov byte [esp + 0xf], bl
shr dl, 1
jmp 0x100a8c6b
xor al, cl
mov dl, 0x5a
xor ecx, ecx
test dl, dl
je 0x100a8ccd
cmp byte [esp + 0x10], 0
je 0x100a8ccd
mov bl, dl
and bl, 1
je 0x100a8cb5
xor cl, byte [esp + 0x10]
mov bl, byte [esp + 0x10]
add bl, bl
cmp byte [esp + 0x10], 0
jns 0x100a8cc5
xor bl, 0x4d
mov byte [esp + 0x10], bl
shr dl, 1
jmp 0x100a8c9f
xor al, cl
xor edx, edx
mov bl, 0x58
test bl, bl
je 0x100a8d01
cmp byte [esp + 0x20], 0
je 0x100a8d01
mov cl, bl
and cl, 1
je 0x100a8ce9
xor dl, byte [esp + 0x20]
mov cl, byte [esp + 0x20]
add cl, cl
cmp byte [esp + 0x20], 0
jns 0x100a8cf9
xor cl, 0x4d
mov byte [esp + 0x20], cl
shr bl, 1
jmp 0x100a8cd3
xor al, dl
mov bl, 0xdb
xor edx, edx
test bl, bl
je 0x100a8d35
cmp byte [esp + 4], 0
je 0x100a8d35
mov cl, bl
and cl, 1
je 0x100a8d1d
xor dl, byte [esp + 4]
mov cl, byte [esp + 4]
add cl, cl
cmp byte [esp + 4], 0
jns 0x100a8d2d
xor cl, 0x4d
mov byte [esp + 4], cl
shr bl, 1
jmp 0x100a8d07
xor dl, al
xor ebx, ebx
mov cl, 0x9e
test cl, cl
je 0x100a8d67
cmp byte [esp + 0x21], 0
je 0x100a8d67
mov al, cl
and al, 1
je 0x100a8d50
xor bl, byte [esp + 0x21]
mov al, byte [esp + 0x21]
add al, al
cmp byte [esp + 0x21], 0
jns 0x100a8d5f
xor al, 0x4d
mov byte [esp + 0x21], al
shr cl, 1
jmp 0x100a8d3b
mov al, byte [esp + 0x14]
xor dl, bl
xor ecx, ecx
mov byte [esp], dl
mov bl, 3
test bl, bl
je 0x100a8d92
test al, al
je 0x100a8d92
mov dl, al
xor cl, al
add dl, dl
test al, al
jns 0x100a8d8c
mov al, dl
xor al, 0x4d
mov dl, al
shr bl, 1
mov al, dl
jmp 0x100a8d74
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 0x100a871c
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.100a8460
movzx ecx, byte [esp + 0x30]
movzx edx, byte [ecx + 0x100bffc0]
movzx eax, byte [ecx + 0x100c00c0]
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 + 0x100bffc0]
movzx ecx, byte [edx + 0x100c00c0]
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 + 0x100bffc0]
movzx eax, byte [ecx + 0x100c00c0]
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 + 0x100c00c0]
mov eax, ecx
movzx ecx, byte [ecx + 0x100bffc0]
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 0x100a8dca
add ebp, 4
xor esi, esi
mov ecx, dword [esp + 8]
lea edx, [esp + 0x34]
mov eax, esi
add ebp, 8
call fcn.100a8599
mov ecx, dword [esp + 8]
lea edx, [esp + 0x44]
mov ebx, eax
lea eax, [esi + 0x1010101]
add esi, 0x2020202
call fcn.100a8599
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 0x100a8ea6
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