Function at 0x100059a6
Capabilities:
Encode data using xor

Disassembly:
push esi
mov esi, ecx
call fcn.10005947
movzx eax, al
dec eax
cmp eax, 0x11
ja case.0x1000597f.3
jmp dword [eax*4 + 0x10005ac6]
mov eax, dword [0x10031088]
test eax, eax
je case.0x1000597f.3
mov ecx, dword [eax + 0x24]
test ecx, ecx
je case.0x1000597f.3
push esi
call fcn.1000c83f
pop esi
ret
mov ecx, esi
pop esi
jmp 0x10005b0e
mov eax, dword [0x10031088]
test eax, eax
je case.0x1000597f.3
mov ecx, dword [eax + 0x3c]
test ecx, ecx
je case.0x1000597f.3
push esi
call fcn.1000f3cb
pop esi
ret
mov eax, dword [0x10031088]
test eax, eax
je case.0x1000597f.3
mov ecx, dword [eax + 0x40]
test ecx, ecx
je case.0x1000597f.3
push esi
call fcn.10010b77
pop esi
ret
mov eax, dword [0x10031088]
test eax, eax
je case.0x1000597f.3
mov ecx, dword [eax + 0x50]
test ecx, ecx
je case.0x1000597f.3
push esi
call fcn.10014da6
pop esi
ret
mov eax, dword [0x10031088]
test eax, eax
je case.0x1000597f.3
mov ecx, dword [eax + 0x44]
test ecx, ecx
je case.0x1000597f.3
push esi
call fcn.10012d31
pop esi
ret
mov eax, dword [0x10031088]
test eax, eax
je case.0x1000597f.3
mov ecx, dword [eax + 0x48]
test ecx, ecx
je case.0x1000597f.3
push esi
call fcn.10013667
pop esi
ret
mov eax, dword [0x10031088]
test eax, eax
je case.0x1000597f.3
mov ecx, dword [eax + 0x4c]
test ecx, ecx
je case.0x1000597f.3
push esi
call fcn.10014800
pop esi
ret
mov eax, dword [0x10031088]
test eax, eax
je case.0x1000597f.3
mov ecx, dword [eax + 0x58]
test ecx, ecx
je case.0x1000597f.3
push esi
call fcn.10015c20
pop esi
ret
mov eax, dword [0x10031088]
test eax, eax
je case.0x1000597f.3
mov ecx, dword [eax + 0x38]
test ecx, ecx
je case.0x1000597f.3
push esi
call fcn.1000d0e6
pop esi
ret
mov ecx, esi
pop esi
jmp 0x10005ddf
mov ecx, esi
pop esi
jmp 0x10005e7a
mov ecx, esi
pop esi
jmp 0x10005faf
mov ecx, esi
pop esi
jmp 0x10006017
cmp dword [0x10031080], 0
je case.0x1000597f.3
push esi
call fcn.1000abb2
pop esi
ret
push 0xa4
mov eax, 0x100221e1
call fcn.1002159d
mov esi, ecx
call fcn.10005947
mov ecx, esi
mov bl, al
call fcn.100057bd
mov ecx, esi
mov edi, eax
call fcn.100057bd
mov esi, eax
cmp bl, 1
je 0x10005b50
cmp bl, 2
je 0x10005b50
mov edx, dword [0x10031088]
mov ecx, dword [0x10031080]
jmp 0x10005b7a
mov edx, dword [0x10031088]
test edx, edx
je 0x10005b6d
mov ecx, dword [edx + 0x58]
test ecx, ecx
je 0x10005b6d
push esi
call fcn.10016ab7
mov edx, dword [0x10031088]
mov ecx, dword [0x10031080]
test ecx, ecx
je 0x10005b7a
mov dword [ecx + 0x4c], esi
cmp bl, 3
je 0x10005b84
cmp bl, 4
jne 0x10005ba4
test edx, edx
je 0x10005b9d
cmp dword [edx + 0x58], 0
je 0x10005b9d
mov ecx, dword [edx + 0x58]
push esi
call fcn.10016b16
mov ecx, dword [0x10031080]
test ecx, ecx
je 0x10005ba4
mov dword [ecx + 0x50], esi
movzx eax, bl
sub eax, 1
je 0x10005d50
sub eax, 1
je 0x10005ce6
sub eax, 1
je 0x10005c65
sub eax, 1
jne 0x10005dd9
movaps xmm0, xmmword [0x10029ff0]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x48], xmm0
mov dword [ebp - 0x38], 0x23411507
mov edx, ebx
mov dword [ebp - 0x34], 0xf000d00
mov dword [ebp - 0x30], 0x4f0402
mov cl, byte [ebp - 0x48]
xor byte [ebp + edx - 0x47], cl
inc edx
cmp edx, 0x1a
jb 0x10005bf0
sub esp, 0x18
mov byte [ebp - 0x2d], bl
lea eax, [ebp - 0x47]
mov ecx, esp
push eax
call fcn.10004090
lea eax, [ebp - 0xb0]
push eax
call fcn.10003b75
add esp, 0x20
mov dword [ebp - 4], 6
cmp dword [eax + 0x14], 0x10
jb 0x10005c2c
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x98]
call fcn.10004090
mov edx, 0xffff3b3b
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x98]
call fcn.10005e4d
push ebx
push 1
lea ecx, [ebp - 0x98]
call fcn.10003f3c
lea ecx, [ebp - 0xb0]
jmp 0x10005dd1
movaps xmm0, xmmword [0x1002a5c0]
xor ebx, ebx
movups xmmword [ebp - 0x68], xmm0
mov edx, ebx
movaps xmm0, xmmword [str._SmQXJ]
push edi
movups xmmword [ebp - 0x58], xmm0
mov cl, byte [ebp - 0x68]
xor byte [ebp + edx - 0x67], cl
inc edx
cmp edx, 0x1e
jb 0x10005c80
sub esp, 0x18
mov byte [ebp - 0x49], bl
lea eax, [ebp - 0x67]
mov ecx, esp
push eax
call fcn.10004090
lea eax, [ebp - 0x80]
push eax
call fcn.10003b75
add esp, 0x20
mov dword [ebp - 4], 4
cmp dword [eax + 0x14], 0x10
jb 0x10005cb9
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x28]
call fcn.10004090
mov edx, 0xff6565ff
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x28]
call fcn.10005e4d
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.10003f3c
lea ecx, [ebp - 0x80]
jmp 0x10005dd1
movaps xmm0, xmmword [0x1002a430]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x24], xmm0
mov dword [ebp - 0x14], 0xf140624
mov edx, ebx
mov word [ebp - 0x10], 0x49
mov cl, byte [ebp - 0x24]
xor byte [ebp + edx - 0x23], cl
inc edx
cmp edx, 0x14
jb 0x10005d03
sub esp, 0x18
mov byte [ebp - 0xf], bl
lea eax, [ebp - 0x23]
mov ecx, esp
push eax
call fcn.10004090
lea eax, [ebp - 0x60]
push eax
call fcn.10003b75
add esp, 0x20
mov dword [ebp - 4], 2
cmp dword [eax + 0x14], 0x10
jb 0x10005d3c
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x80]
call fcn.10004090
mov byte [ebp - 4], 3
mov edx, 0xffff3b3b
jmp 0x10005dbb
movaps xmm0, xmmword [0x1002a470]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x18], 0x3574b44
mov edx, ebx
mov dword [ebp - 0x14], 0x4b504260
mov word [ebp - 0x10], 0xd
mov cl, byte [ebp - 0x28]
xor byte [ebp + edx - 0x27], cl
inc edx
cmp edx, 0x18
jb 0x10005d74
sub esp, 0x18
mov byte [ebp - 0xf], bl
lea eax, [ebp - 0x27]
mov ecx, esp
push eax
call fcn.10004090
lea eax, [ebp - 0x60]
push eax
call fcn.10003b75
add esp, 0x20
mov dword [ebp - 4], ebx
cmp dword [eax + 0x14], 0x10
jb 0x10005da9
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x80]
call fcn.10004090
mov byte [ebp - 4], 1
mov edx, 0xff6565ff
lea ecx, [ebp - 0x80]
call fcn.10005e4d
push ebx
push 1
lea ecx, [ebp - 0x80]
call fcn.10003f3c
lea ecx, [ebp - 0x60]
push ebx
push 1
call fcn.10003f3c
call fcn.10021566
ret
push 0x34
mov eax, 0x1002220f
call fcn.100215d1
xor ebx, ebx
mov dword [ebp - 0x14], 0xf
mov dword [ebp - 0x18], ebx
mov byte [ebp - 0x28], bl
lea eax, [ebp - 0x28]
mov dword [ebp - 4], ebx
push eax
call fcn.1000586e
mov ecx, eax
call fcn.100057bd
cmp dword [ebp - 0x14], 0x10
lea ecx, [ebp - 0x28]
mov esi, eax
cmovae ecx, dword [ebp - 0x28]
push ecx
lea ecx, [ebp - 0x40]
call fcn.10004090
mov edx, esi
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x40]
call fcn.10005e4d
push ebx
push 1
lea ecx, [ebp - 0x40]
call fcn.10003f3c
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.10003f3c
call fcn.1002157b
ret
push 0x64
mov eax, 0x10022254
call fcn.100215d1
push 0xf
xor ebx, ebx
pop eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], ebx
mov byte [ebp - 0x40], bl
mov dword [ebp - 4], ebx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], ebx
mov byte [ebp - 0x28], bl
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 1
push eax
lea eax, [ebp - 0x40]
push eax
call fcn.1000586e
mov ecx, eax
call fcn.1000586e
cmp dword [ebp - 0x30], ebx
je 0x10005ec6
cmp dword [ebp - 0x30], 0xff
ja 0x10005f30
cmp dword [ebp - 0x18], 0
je 0x10005ed2
cmp dword [ebp - 0x18], 0x1e
ja 0x10005f30
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0x70]
cmovae eax, dword [ebp - 0x28]
push eax
call fcn.10004090
mov byte [ebp - 4], 2
lea eax, [ebp - 0x40]
cmp dword [ebp - 0x2c], 0x10
lea ecx, [ebp - 0x58]
cmovae eax, dword [ebp - 0x40]
push eax
call fcn.10004090
push ebx
push ecx
mov byte [ebp - 4], 3
lea eax, [ebp - 0x70]
and dword [esp], 0
push ebx
push ebx
push ebx
push eax
lea eax, [ebp - 0x58]
push eax
push eax
call dword [0x10028c0c]
push ebx
push 1
lea ecx, [ebp - 0x58]
call fcn.10003f3c
push ebx
push 1
lea ecx, [ebp - 0x70]
call fcn.10003f3c
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.10003f3c
push ebx
push 1
lea ecx, [ebp - 0x40]
call fcn.10003f3c
call fcn.1002157b
ret
push 0x1c
mov eax, 0x100222a4
call fcn.100215d1
mov ebx, ecx
xor eax, eax
mov dword [ebp - 0x14], 0xf
mov dword [ebp - 0x18], eax
mov byte [ebp - 0x28], al
mov dword [ebp - 4], eax
lea eax, [ebp - 0x28]
push eax
call fcn.1000586e
cmp dword [ebp - 0x18], 0
je 0x10006005
mov ecx, ebx
call fcn.100057bd
mov ecx, ebx
mov edi, eax
call fcn.100057bd
mov ecx, ebx
mov esi, eax
call fcn.100057bd
push eax
push esi
mov edx, edi
lea ecx, [ebp - 0x28]
call fcn.10005f4c
pop ecx
pop ecx
push 0
push 1
lea ecx, [ebp - 0x28]
call fcn.10003f3c
call fcn.1002157b
ret
push 0x34
mov eax, 0x10022305
call fcn.100215d1
mov esi, ecx
mov dword [ebp - 0x18], 0xf
xor eax, eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x1c], eax
mov byte [ebp - 0x2c], al
call fcn.10005947
mov ecx, esi
mov bl, al
call fcn.100057bd
movzx ecx, bl
mov edi, eax
sub ecx, 1
je 0x100061d8
sub ecx, 1
je 0x100061c2
sub ecx, 1
je 0x100060ba
sub ecx, 1
jne 0x100062e9
mov edx, edi
call fcn.10005069
test eax, eax
je 0x100062e9
mov ecx, eax
call fcn.100057e2
mov edx, edi
mov ecx, 0x100354e0
call fcn.10004ffd
mov ecx, edi
call fcn.10006c93
mov esi, eax
test esi, esi
je 0x100062e9
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x100062e9
mov ecx, esi
call fcn.1000b04a
jmp 0x100062e9
lea eax, [ebp - 0x2c]
mov ecx, esi
push eax
call fcn.1000586e
mov esi, eax
mov ecx, esi
call fcn.10005947
mov bl, al
mov ecx, esi
mov byte [ebp - 0x38], bl
call fcn.10005947
mov bh, al
mov ecx, esi
mov byte [ebp - 0x34], bh
call fcn.10005947
mov edx, edi
mov byte [ebp - 0x30], al
call fcn.10005069
cmp dword [ebp - 0x1c], 0
mov esi, eax
je 0x100062e9
test esi, esi
jne 0x1000619e
push 0x1c
call fcn.100204e6
mov esi, eax
pop ecx
mov dword [ebp - 0x3c], esi
push dword [ebp - 0x30]
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 3
push dword [ebp - 0x34]
push dword [ebp - 0x38]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.10003ada
mov ecx, esi
call fcn.10005800
push 0x1c
mov ebx, eax
mov byte [ebp - 4], 0
call fcn.100204e6
mov esi, eax
pop ecx
mov dword [ebp - 0x40], esi
push dword [ebp - 0x30]
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 4
push dword [ebp - 0x34]
push dword [ebp - 0x38]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.10003ada
mov ecx, esi
call fcn.10005800
push eax
mov edx, edi
mov byte [ebp - 4], 0
call fcn.100050bf
test al, al
jne 0x1000608c
test ebx, ebx
je 0x1000608c
push 0
push 1
mov ecx, ebx
call fcn.10003f3c
push 0x1c
push ebx
call fcn.10020519
pop ecx
pop ecx
jmp 0x1000608c
lea eax, [ebp - 0x2c]
cmp esi, eax
je 0x100061b1
push 0xffffffffffffffff
push 0
push eax
mov ecx, esi
call fcn.10003d1b
mov al, byte [ebp - 0x30]
mov byte [esi + 0x18], bl
mov byte [esi + 0x19], bh
mov byte [esi + 0x1a], al
jmp 0x1000608c
mov edx, edi
call fcn.10005069
test eax, eax
je 0x100062e9
mov ecx, eax
jmp 0x100062d8
lea eax, [ebp - 0x2c]
mov ecx, esi
push eax
call fcn.1000586e
mov esi, eax
mov ecx, esi
call fcn.10005947
mov bl, al
mov ecx, esi
mov byte [ebp - 0x38], bl
call fcn.10005947
mov bh, al
mov ecx, esi
mov byte [ebp - 0x34], bh
call fcn.10005947
mov edx, edi
mov byte [ebp - 0x30], al
call fcn.10005069
cmp dword [ebp - 0x1c], 0
mov esi, eax
je 0x100062d2
test esi, esi
jne 0x100062b1
push 0x1c
call fcn.100204e6
mov esi, eax
pop ecx
mov dword [ebp - 0x40], esi
push dword [ebp - 0x30]
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 1
push dword [ebp - 0x34]
push dword [ebp - 0x38]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.10003ada
mov ecx, esi
call fcn.10005800
push 0x1c
mov ebx, eax
mov byte [ebp - 4], 0
call fcn.100204e6
mov esi, eax
pop ecx
mov dword [ebp - 0x40], esi
push dword [ebp - 0x30]
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 2
push dword [ebp - 0x34]
push dword [ebp - 0x38]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.10003ada
mov ecx, esi
call fcn.10005800
push eax
mov edx, edi
mov byte [ebp - 4], 0
call fcn.100050bf
test al, al
jne 0x100062e9
test ebx, ebx
je 0x100062e9
push 0
push 1
mov ecx, ebx
call fcn.10003f3c
push 0x1c
push ebx
call fcn.10020519
pop ecx
pop ecx
jmp 0x100062e9
lea eax, [ebp - 0x2c]
cmp esi, eax
je 0x100062c4
push 0xffffffffffffffff
push 0
push eax
mov ecx, esi
call fcn.10003d1b
mov al, byte [ebp - 0x30]
mov byte [esi + 0x18], bl
mov byte [esi + 0x19], bh
mov byte [esi + 0x1a], al
jmp 0x100062e9
test esi, esi
je 0x100062e9
mov ecx, esi
call fcn.100057e2
mov edx, edi
mov ecx, 0x100354e0
call fcn.10004ffd
push 0
push 1
lea ecx, [ebp - 0x2c]
call fcn.10003f3c
call fcn.1002157b
ret