Function at 0x1003c030
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x10159f56
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xd4
push ebx
push ebp
push esi
lea eax, [esp + 0xb8]
push edi
push eax
mov byte [0x1018c566], 0x9c
call fcn.10068f00
add esp, 4
mov ecx, dword [0x10191a54]
xor edi, edi
mov dword [esp + 0xec], edi
call fcn.10058e50
mov ecx, eax
call fcn.1002db80
mov ebp, eax
mov eax, 0x142
cdq
idiv dword [0x1018c540]
mov ecx, dword [0x1018c53c]
mov eax, 0xbc
mov word [esp + 0x16], ax
mov word [esp + 0x1a], ax
mov word [esp + 0x1e], ax
mov al, byte [0x10198064]
test al, 1
mov word [esp + 0x14], 0xa6
mov word [esp + 0x20], 0xab
mov dl, byte [edx + ecx]
mov ecx, 0xa4
mov byte [0x1018c564], dl
mov word [esp + 0x18], cx
mov word [esp + 0x1c], cx
jne 0x1003c104
mov bl, al
lea eax, [esp + 0x14]
or bl, 1
push 0x92
push eax
mov ecx, 0x10198068
mov byte [0x10198064], bl
call fcn.100184b0
push 0x10043190
call fcn.1013c36b
add esp, 4
mov cl, byte [esp + 0x13]
mov esi, dword [0x10198068]
mov byte [esp + 0x7c], cl
push edi
lea ecx, [esp + 0x80]
call fcn.1000bc70
push esi
call fcn.1013c2c2
add esp, 4
lea ecx, [esp + 0x7c]
push eax
push esi
call fcn.1000bf40
mov eax, 0x80
mov esi, 0x13
cdq
idiv dword [0x1018c540]
mov eax, dword [0x1018c53c]
mov byte [esp + 0xec], 1
mov word [esp + 0x40], si
mov word [esp + 0x42], di
mov bl, byte [edx + eax]
mov al, byte [0x10197fd4]
test al, 1
jne 0x1003c18a
lea ecx, [esp + 0x40]
or al, 1
push ecx
mov ecx, 0x10197fd8
mov byte [0x10197fd4], al
call fcn.100154b0
push 0x1003cc30
call fcn.1013c36b
add esp, 4
mov al, byte [0x10197fdc]
mov word [esp + 0x14], si
test al, 1
mov word [esp + 0x16], di
jne 0x1003c1c0
lea edx, [esp + 0x14]
or al, 1
push edx
mov ecx, 0x10197fe0
mov byte [0x10197fdc], al
call fcn.100154b0
push 0x1003cc20
call fcn.1013c36b
add esp, 4
mov eax, dword [0x10197fe0]
lea ecx, [esp + 0xbc]
push eax
lea edx, [esp + 0x34]
push ecx
push edx
call fcn.1000cf10
push ebp
push eax
lea eax, [esp + 0x80]
mov byte [esp + 0x100], 2
push eax
call fcn.1000d050
mov ecx, dword [0x10197fd8]
lea edx, [esp + 0xc4]
push ecx
push eax
push edx
mov byte [esp + 0x110], 3
call fcn.1000cf10
lea ecx, [esp + 0xa0]
lea edx, [esp + 0x7c]
push ecx
push eax
push edx
mov byte [esp + 0x11c], 4
call fcn.1000d050
push eax
lea eax, [esp + 0xd0]
push eax
mov byte [esp + 0x124], 5
call fcn.10053830
add esp, 0x38
push 1
lea ecx, [esp + 0x5c]
mov byte [esp + 0xf0], 0xa
call fcn.1000bc70
push 1
lea ecx, [esp + 0xb0]
mov byte [esp + 0xf0], 9
call fcn.1000bc70
push 1
lea ecx, [esp + 0x70]
mov byte [esp + 0xf0], 8
call fcn.1000bc70
push 1
lea ecx, [esp + 0x34]
mov byte [esp + 0xf0], 7
call fcn.1000bc70
mov cl, byte [esp + 0x13]
push edi
mov byte [esp + 0x90], cl
lea ecx, [esp + 0x90]
mov byte [0x1018c567], bl
call fcn.1000bc70
mov al, byte [0x10197fe4]
mov bl, byte [0x1018c567]
test al, 1
mov byte [esp + 0xec], 0xb
mov byte [esp + 0x40], bl
mov word [esp + 0x14], 0x80
mov word [esp + 0x16], 0x8e
mov word [esp + 0x18], 0x92
mov word [esp + 0x1a], 0x82
mov word [esp + 0x1c], 0x8f
jne 0x1003c317
mov cl, al
lea edx, [esp + 0x14]
or cl, 1
push 0xeb
mov byte [0x10197fe4], cl
push edx
mov ecx, 0x10197fe8
call fcn.1000b840
push 0x1003cc60
call fcn.1013c36b
add esp, 4
mov al, byte [esp + 0x13]
mov esi, dword [0x10197fe8]
push edi
lea ecx, [esp + 0x5c]
mov byte [esp + 0x5c], al
call fcn.1000bc70
push esi
call fcn.1013c2c2
add esp, 4
lea ecx, [esp + 0x58]
push eax
push esi
call fcn.1000bf40
mov al, byte [0x10197fec]
mov byte [esp + 0xec], 0xc
test al, 1
mov word [esp + 0x14], 0x45
mov word [esp + 0x16], 6
mov word [esp + 0x18], 0x16
mov word [esp + 0x1a], 0x17
mov word [esp + 0x1c], 0x2d
mov word [esp + 0x1e], 0x36
mov word [esp + 0x20], 0xd
jne 0x1003c3a8
lea ecx, [esp + 0x14]
or al, 1
push ecx
mov ecx, 0x10197ff0
mov byte [0x10197fec], al
call fcn.10043f50
push 0x1003cc50
call fcn.1013c36b
add esp, 4
mov dl, byte [esp + 0x13]
mov esi, dword [0x10197ff0]
push edi
lea ecx, [esp + 0xb0]
mov byte [esp + 0xb0], dl
call fcn.1000bc70
push esi
call fcn.1013c2c2
add esp, 4
lea ecx, [esp + 0xac]
push eax
push esi
call fcn.1000bf40
mov al, byte [0x10197ff4]
mov byte [esp + 0xec], 0xd
test al, 1
mov word [esp + 0x14], 0x4f
mov word [esp + 0x16], 0x54
mov word [esp + 0x18], 0x57
mov word [esp + 0x1a], 0x52
jne 0x1003c42d
or al, 1
mov ecx, 0x10197ff8
mov byte [0x10197ff4], al
lea eax, [esp + 0x14]
push eax
call fcn.10044ad0
push 0x1003cc40
call fcn.1013c36b
add esp, 4
mov cl, byte [esp + 0x13]
mov esi, dword [0x10197ff8]
mov byte [esp + 0x30], cl
push edi
lea ecx, [esp + 0x34]
call fcn.1000bc70
push esi
call fcn.1013c2c2
add esp, 4
lea ecx, [esp + 0x30]
push eax
push esi
call fcn.1000bf40
mov eax, 7
mov byte [esp + 0xec], 0xe
mov word [esp + 0x16], ax
mov word [esp + 0x1a], ax
mov al, byte [0x10197ffc]
mov word [esp + 0x14], 0x59
test al, 1
mov word [esp + 0x18], 0x1d
mov word [esp + 0x1c], 0x15
mov word [esp + 0x1e], 0xd
mov word [esp + 0x20], di
mov word [esp + 0x22], 9
mov word [esp + 0x24], 1
mov word [esp + 0x26], 0x4a
mov word [esp + 0x28], 0x4f
mov word [esp + 0x2a], 0x12
mov word [esp + 0x2c], 3
jne 0x1003c4e7
lea edx, [esp + 0x14]
or al, 1
push edx
mov ecx, 0x10198000
mov byte [0x10197ffc], al
call fcn.10043bf0
push 0x10043a00
call fcn.1013c36b
add esp, 4
mov al, byte [esp + 0x13]
mov esi, dword [0x10198000]
push edi
lea ecx, [esp + 0x70]
mov byte [esp + 0x70], al
call fcn.1000bc70
push esi
call fcn.1013c2c2
add esp, 4
lea ecx, [esp + 0x6c]
push eax
push esi
call fcn.1000bf40
lea ecx, [esp + 0x9c]
push 0x708
lea edx, [esp + 0x5c]
push ecx
push edx
lea eax, [esp + 0xb8]
push ebp
lea ecx, [esp + 0xcc]
push eax
lea edx, [esp + 0x44]
push ecx
lea eax, [esp + 0xe4]
push edx
push eax
mov byte [esp + 0x10c], 0xf
call fcn.100949b0
lea ecx, [esp + 0xac]
lea edx, [esp + 0x8c]
push ecx
push eax
push edx
mov byte [esp + 0x118], 0x10
call fcn.1008ec30
add esp, 0x2c
lea ecx, [esp + 0xcc]
test al, al
sete byte [esp + 0x13]
mov byte [esp + 0xec], 0xf
call fcn.10094f40
push 1
lea ecx, [esp + 0x70]
mov byte [esp + 0xf0], 0xe
call fcn.1000bc70
push 1
lea ecx, [esp + 0x34]
mov byte [esp + 0xf0], 0xd
call fcn.1000bc70
push 1
lea ecx, [esp + 0xb0]
mov byte [esp + 0xf0], 0xc
call fcn.1000bc70
push 1
lea ecx, [esp + 0x5c]
mov byte [esp + 0xf0], 0xb
call fcn.1000bc70
mov al, byte [esp + 0x13]
test al, al
jne 0x1003cba6
lea eax, [esp + 0x8c]
lea ecx, [esp + 0x48]
push eax
push ecx
call fcn.10022670
add esp, 8
mov dl, byte [0x1018c567]
mov al, byte [0x1018c565]
push edx
push 0x7e
push eax
mov eax, 0x2b
cdq
idiv dword [0x1018c540]
mov ecx, dword [0x1018c53c]
mov byte [esp + 0xf8], 0x11
mov dl, byte [edx + ecx]
push edx
push 0x47
push 0x5b
call fcn.1003c020
add esp, 8
push eax
push 0xffffffffffffff9e
push 0xffffffffffffffb9
call fcn.100398e0
add esp, 0x10
add al, 0x63
push eax
call fcn.100398e0
mov cl, 0x3a
mov edx, dword [esp + 0x50]
imul cl
push edx
push eax
call fcn.1003c020
mov byte [0x1018c569], al
mov eax, dword [esp + 0x64]
add esp, 0x18
cmp eax, edi
je 0x1003c677
mov ecx, dword [esp + 0x50]
sub ecx, eax
sar ecx, 4
cmp ecx, 2
jae 0x1003c6e1
call fcn.100391a0
mov eax, 0x1fd
push edi
cdq
idiv dword [0x1018c540]
mov eax, dword [0x1018c53c]
mov cl, byte [edx + eax]
mov byte [0x1018c567], cl
call fcn.1008f800
add esp, 4
push 0x35
push 0x1f
push 0xfffffffffffffff6
call fcn.100391a0
sub al, 0x5a
push eax
call fcn.100398e0
mov ebx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
add esp, 0x10
cmp esi, ebx
mov byte [esp + 0xec], 0xb
je 0x1003cb91
push edi
mov ecx, esi
call fcn.100461a0
add esi, 0x10
cmp esi, ebx
jne 0x1003c6cd
jmp 0x1003cb8d
push 0xa
push eax
call fcn.10021b70
mov edx, dword [esp + 0x54]
mov esi, eax
add edx, 0x10
push 0xa
push edx
mov dword [esp + 0x24], esi
mov byte [esp + 0x51], bl
call fcn.10021b70
add esp, 0x10
cmp esi, edi
mov ebp, eax
mov byte [0x1018c565], bl
je 0x1003cb61
cmp ebp, edi
je 0x1003cb61
push 1
call fcn.1008f800
mov al, bl
dec bl
push eax
call fcn.100391c0
mov ecx, dword [0x1018c540]
inc al
mov byte [0x1018c567], al
mov eax, 0x276
cdq
idiv ecx
mov eax, 0x184
mov esi, edx
cdq
idiv ecx
mov eax, dword [0x1018c53c]
mov cl, byte [edx + eax]
mov dl, byte [esi + eax]
sub cl, dl
push ecx
call fcn.100391c0
mov cl, al
mov eax, 0x4e
cdq
idiv dword [0x1018c540]
mov eax, dword [0x1018c53c]
mov al, byte [edx + eax]
mov dl, 0x5d
imul dl
mov dl, byte [0x1018c567]
sub bl, al
mov eax, dword [esp + 0x4d]
sub bl, dl
push eax
sub bl, cl
call fcn.100391c0
sub bl, al
mov al, byte [0x10198004]
add esp, 0x10
sub bl, 0x52
test al, 1
mov word [esp + 0x58], 0x54
mov word [esp + 0x5a], 6
mov word [esp + 0x5c], 0x3d
mov word [esp + 0x5e], 0x31
mov word [esp + 0x60], 0x1b
mov word [esp + 0x62], 0x18
mov word [esp + 0x64], 0xf
mov word [esp + 0x66], 7
mov word [esp + 0x68], 0x17
jne 0x1003c803
lea ecx, [esp + 0x58]
or al, 1
push ecx
mov ecx, 0x10198008
mov byte [0x10198004], al
call fcn.100440f0
push 0x10043ba0
call fcn.1013c36b
add esp, 4
mov dl, byte [esp + 0x13]
mov edi, dword [0x10198008]
push 0
lea ecx, [esp + 0x34]
mov byte [esp + 0x34], dl
call fcn.1000bc70
push edi
call fcn.1013c2c2
add esp, 4
mov esi, eax
lea ecx, [esp + 0x30]
push 1
push esi
call fcn.1000c010
test al, al
je 0x1003c856
mov eax, dword [esp + 0x34]
push esi
push edi
push eax
call fcn.100017d0
mov ecx, dword [esp + 0x40]
add esp, 0xc
xor edi, edi
mov dword [esp + 0x38], esi
mov word [ecx + esi*2], di
jmp 0x1003c858
xor edi, edi
mov ecx, dword [0x10191a54]
lea edx, [esp + 0x30]
push ebp
push edx
mov byte [esp + 0xf4], 0x12
call fcn.10058e60
mov ecx, eax
call fcn.10067f30
push 1
lea ecx, [esp + 0x34]
mov byte [esp + 0xf0], 0x11
call fcn.1000bc70
mov al, byte [0x1019800c]
mov byte [0x1018c568], bl
test al, 1
mov word [esp + 0x30], di
mov word [esp + 0x32], 6
mov word [esp + 0x34], 0x10
mov word [esp + 0x36], 7
mov word [esp + 0x38], 0x2a
mov word [esp + 0x3a], 0x1c
mov word [esp + 0x3c], 0x11
jne 0x1003c930
mov bl, al
push 0x10
or bl, 1
mov byte [0x1019800c], bl
call fcn.1013c2df
add esp, 4
mov dword [0x10198010], eax
xor esi, esi
mov di, word [esp + esi + 0x30]
push 0x75
mov eax, edi
mov ecx, 0x10198010
and eax, 0xffff
push eax
call fcn.100a8ee0
mov ecx, dword [0x10198010]
add eax, 0x75
xor eax, edi
mov word [esi + ecx], ax
add esi, 2
cmp esi, 0xe
jb 0x1003c8e5
mov edx, dword [0x10198010]
push 0x10043b90
mov word [edx + 0xe], 0
call fcn.1013c36b
add esp, 4
xor edi, edi
mov esi, dword [0x10198010]
mov al, byte [esp + 0x13]
push esi
mov byte [esp + 0x70], al
mov dword [esp + 0x74], edi
mov dword [esp + 0x78], edi
mov dword [esp + 0x7c], edi
call fcn.1013c2c2
add esp, 4
lea ecx, [esp + 0x6c]
push eax
push esi
call fcn.1000bf40
mov ecx, dword [esp + 0x14]
push 0xa
lea edx, [esp + 0x5c]
push ecx
push edx
mov byte [esp + 0xf8], 0x13
call fcn.10021a90
add esp, 0xc
mov ecx, dword [0x10191a54]
push eax
lea eax, [esp + 0x70]
mov byte [esp + 0xf0], 0x14
push eax
call fcn.10058e60
mov ecx, eax
call fcn.10068200
mov ecx, dword [esp + 0x5c]
mov byte [esp + 0xec], 0x13
cmp ecx, edi
je 0x1003c9c8
mov al, byte [ecx - 1]
test al, al
je 0x1003c9bc
cmp al, 0xff
je 0x1003c9bc
dec al
mov byte [ecx - 1], al
jmp 0x1003c9c8
add ecx, 0xfffffffe
push ecx
call fcn.101307a0
add esp, 4
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x5c], edi
mov dword [esp + 0x60], edi
mov dword [esp + 0x64], edi
cmp ecx, edi
mov byte [esp + 0xec], 0x11
je 0x1003ca02
mov al, byte [ecx - 1]
test al, al
je 0x1003c9f6
cmp al, 0xff
je 0x1003c9f6
dec al
mov byte [ecx - 1], al
jmp 0x1003ca02
add ecx, 0xfffffffe
push ecx
call fcn.101307a0
add esp, 4
mov al, byte [0x1018c566]
mov cl, 0xe8
imul cl
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x4c]
mov byte [0x1018c567], al
cmp esi, edi
mov byte [esp + 0xec], 0xb
je 0x1003ca38
push 1
mov ecx, esi
call fcn.1000bc70
add esi, 0x10
cmp esi, edi
jne 0x1003ca24
mov esi, dword [esp + 0x4c]
push esi
call fcn.101307a0
mov ecx, dword [esp + 0x94]
xor esi, esi
add esp, 4
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], esi
cmp ecx, esi
mov byte [esp + 0xec], 7
je 0x1003ca80
mov al, byte [ecx - 1]
test al, al
je 0x1003ca74
cmp al, 0xff
je 0x1003ca74
dec al
mov byte [ecx - 1], al
jmp 0x1003ca80
add ecx, 0xfffffffe
push ecx
call fcn.101307a0
add esp, 4
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], esi
mov dword [esp + 0x98], esi
cmp ecx, esi
mov byte [esp + 0xec], 1
je 0x1003cac6
mov al, byte [ecx - 1]
test al, al
je 0x1003caba
cmp al, 0xff
je 0x1003caba
dec al
mov byte [ecx - 1], al
jmp 0x1003cac6
add ecx, 0xfffffffe
push ecx
call fcn.101307a0
add esp, 4
mov ecx, dword [esp + 0x80]
mov dword [esp + 0xa0], esi
mov dword [esp + 0xa4], esi
mov dword [esp + 0xa8], esi
cmp ecx, esi
mov byte [esp + 0xec], 0
je 0x1003cb0c
mov al, byte [ecx - 1]
test al, al
je 0x1003cb00
cmp al, 0xff
je 0x1003cb00
dec al
mov byte [ecx - 1], al
jmp 0x1003cb0c
add ecx, 0xfffffffe
push ecx
call fcn.101307a0
add esp, 4
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x80], esi
mov dword [esp + 0x84], esi
mov dword [esp + 0x88], esi
cmp ecx, esi
mov dword [esp + 0xec], 0xffffffff
je 0x1003cb5a
mov al, byte [ecx - 1]
test al, al
je 0x1003cb4e
cmp al, 0xff
je 0x1003cb4e
dec al
mov byte [ecx - 1], al
mov al, 1
jmp 0x1003cc03
add ecx, 0xfffffffe
push ecx
call fcn.101307a0
add esp, 4
mov al, 1
jmp 0x1003cc03
push edi
call fcn.1008f800
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 0x50]
add esp, 4
cmp esi, ebx
mov byte [esp + 0xec], 0xb
je 0x1003cb91
push edi
mov ecx, esi
call fcn.100461a0
add esi, 0x10
cmp esi, ebx
jne 0x1003cb7e
mov esi, dword [esp + 0x4c]
push esi
call fcn.101307a0
add esp, 4
mov dword [esp + 0x4c], edi
mov dword [esp + 0x50], edi
mov dword [esp + 0x54], edi
push 1
lea ecx, [esp + 0x90]
mov byte [esp + 0xf0], 7
call fcn.1000bc70
push 1
lea ecx, [esp + 0xa0]
mov byte [esp + 0xf0], 1
call fcn.1000bc70
push 1
lea ecx, [esp + 0x80]
mov byte [esp + 0xf0], 0
call fcn.1000bc70
push 1
lea ecx, [esp + 0xc0]
mov dword [esp + 0xf0], 0xffffffff
call fcn.1000bc70
xor al, al
mov ecx, dword [esp + 0xe4]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0xe0
ret