Function at 0x100c9b58
Capabilities:
Contain obfuscated stackstrings
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1019abd5
mov eax, dword fs:[0]
push eax
sub esp, 0x80
mov eax, dword [0x101f6e00]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov edx, dword [0x10297f7c]
cmp dword [edx + 0x518], 0
je case.default.0x100c9900
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 8]
sub ecx, dword [esi + 0x14]
inc eax
cmp eax, ecx
jbe 0x100c9894
xor cl, cl
jmp 0x100c98a8
mov eax, dword [esi + 8]
lea ecx, [esi + 0x10]
push eax
call fcn.1004f3b0
mov edx, dword [0x10297f7c]
mov cl, byte [eax]
mov eax, dword [esi + 8]
inc eax
movzx ecx, cl
mov dword [ebp - 0x80], eax
mov dword [esi + 8], eax
cmp ecx, 5
ja case.default.0x100c9900
jmp dword [ecx*4 + 0x100ca20c]
mov ecx, dword [esi + 0x18]
inc eax
sub ecx, dword [esi + 0x14]
cmp eax, ecx
jbe 0x100c98d4
xor cl, cl
jmp 0x100c98e7
push dword [ebp - 0x80]
lea ecx, [esi + 0x10]
call fcn.1004f3b0
mov edx, dword [0x10297f7c]
mov cl, byte [eax]
mov eax, dword [esi + 8]
inc eax
mov dword [ebp - 0x80], eax
mov dword [esi + 8], eax
movzx eax, cl
add eax, 0xfffffffa
cmp eax, 3
ja case.default.0x100c9900
jmp dword [eax*4 + 0x100ca224]
mov ecx, dword [esi + 0x18]
mov eax, dword [ebp - 0x80]
sub ecx, dword [esi + 0x14]
inc eax
cmp eax, ecx
jbe 0x100c991c
xor cl, cl
inc dword [esi + 8]
jmp 0x100c993b
push dword [ebp - 0x80]
lea ecx, [esi + 0x10]
call fcn.1004f3b0
mov cl, byte [eax]
inc dword [esi + 8]
cmp cl, 4
ja case.default.0x100c9900
mov edx, dword [0x10297f7c]
mov eax, dword [edx + 0x518]
movaps xmm0, xmmword [0x101de220]
movups xmmword [ebp - 0x3c], xmm0
mov dword [ebp - 0x1c], 0x29302336
movaps xmm0, xmmword [0x101de400]
mov byte [eax + 0x21], cl
xor ecx, ecx
mov dword [eax + 0x18], 0x5a
mov dword [eax + 0x1c], 0
movups xmmword [ebp - 0x2c], xmm0
mov dword [ebp - 0x18], 0x6b3c29
nop dword [eax + eax]
mov al, byte [ebp + ecx - 0x3b]
xor al, byte [ebp - 0x3c]
mov byte [ebp + ecx - 0x3b], al
inc ecx
cmp ecx, 0x26
jb 0x100c9980
push 0xffff4059
lea eax, [ebp - 0x3b]
mov byte [ebp - 0x15], 0
push eax
call fcn.100e4e60
jmp case.default.0x100c9900
mov edx, dword [ebp - 0x80]
mov ecx, dword [esi + 0x18]
sub ecx, dword [esi + 0x14]
lea eax, [edx + 4]
cmp eax, ecx
jbe 0x100c99bc
xor eax, eax
jmp 0x100c99c7
push edx
lea ecx, [esi + 0x10]
call fcn.1004f3b0
mov eax, dword [eax]
add dword [esi + 8], 4
test eax, eax
je case.default.0x100c9900
movaps xmm0, xmmword [0x101de1b0]
xor ecx, ecx
movups xmmword [ebp - 0x3c], xmm0
push 0xffff00ff
movaps xmm0, xmmword [0x101de090]
push eax
movups xmmword [ebp - 0x2c], xmm0
mov dword [ebp - 0x1c], 0x2c2a6b3f
mov dword [ebp - 0x18], 0x25222a
nop
mov al, byte [ebp + ecx - 0x3b]
xor al, byte [ebp - 0x3c]
mov byte [ebp + ecx - 0x3b], al
inc ecx
cmp ecx, 0x26
jb 0x100c9a00
sub esp, 0x1c
mov byte [ebp - 0x15], 0
mov edx, esp
lea ecx, [ebp - 0x3b]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100c9a40
sub ecx, esi
lea eax, [ebp - 0x3b]
push ecx
push eax
mov ecx, edx
call fcn.100484d0
lea eax, [ebp - 0x60]
push eax
call fcn.10052ec0
add esp, 0x24
mov dword [ebp - 4], 0
lea ecx, [eax + 4]
cmp dword [eax + 0x18], 0xf
jbe 0x100c9a73
mov ecx, dword [ecx]
push ecx
call fcn.100e4e60
lea ecx, [ebp - 0x60]
call fcn.100477d0
mov eax, dword [ebp - 0x60]
push 8
push eax
mov dword [ebp - 0x60], 0
call fcn.1013c8d0
add esp, 8
jmp case.default.0x100c9900
movaps xmm0, xmmword [0x101ddfa0]
xor ecx, ecx
movups xmmword [ebp - 0x44], xmm0
mov word [ebp - 0x14], 0x520f
movaps xmm0, xmmword [0x101ddb60]
movups xmmword [ebp - 0x34], xmm0
mov byte [ebp - 0x12], 0
movaps xmm0, xmmword [0x101ddd20]
movups xmmword [ebp - 0x24], xmm0
nop dword [eax + eax]
mov al, byte [ebp + ecx - 0x43]
xor al, byte [ebp - 0x44]
mov byte [ebp + ecx - 0x43], al
inc ecx
cmp ecx, 0x31
jb 0x100c9ad0
push 0xffff00ff
lea eax, [ebp - 0x43]
mov byte [ebp - 0x12], 0
push eax
call fcn.100e4e60
jmp case.default.0x100c9900
movaps xmm0, xmmword [0x101de450]
xor ecx, ecx
movups xmmword [ebp - 0x40], xmm0
mov dword [ebp - 0x20], 0x38332433
movaps xmm0, xmmword [0x101de2d0]
movups xmmword [ebp - 0x30], xmm0
mov dword [ebp - 0x1c], 0x3a357622
mov dword [ebp - 0x18], 0x78252537
mov byte [ebp - 0x14], 0
nop dword [eax]
mov al, byte [ebp + ecx - 0x3f]
xor al, byte [ebp - 0x40]
mov byte [ebp + ecx - 0x3f], al
inc ecx
cmp ecx, 0x2b
jb 0x100c9b30
push 0xffff00ff
lea eax, [ebp - 0x3f]
mov byte [ebp - 0x14], 0
push eax
call fcn.100e4e60
jmp case.default.0x100c9900
mov ecx, dword [esi + 0x18]
lea edx, [esi + 0x18]
sub ecx, dword [esi + 0x14]
inc eax
cmp eax, ecx
jbe 0x100c9b6a
xor cl, cl
jmp 0x100c9b7a
push dword [ebp - 0x80]
lea ecx, [esi + 0x10]
call fcn.1004f3b0
lea edx, [esi + 0x18]
mov cl, byte [eax]
mov eax, dword [esi + 8]
inc eax
mov dword [ebp - 0x84], eax
mov dword [esi + 8], eax
movzx eax, cl
sub eax, 6
je 0x100c9cfb
sub eax, 1
je 0x100c9c08
sub eax, 3
jne case.default.0x100c9900
movaps xmm0, xmmword [0x101de190]
xor ecx, ecx
movups xmmword [ebp - 0x40], xmm0
mov dword [ebp - 0x20], 0x283f282b
movaps xmm0, xmmword [0x101de210]
movups xmmword [ebp - 0x30], xmm0
mov dword [ebp - 0x1c], 0x236d3923
mov dword [ebp - 0x18], 0x2224392c
mov word [ebp - 0x14], 0x6323
mov byte [ebp - 0x12], al
nop word [eax + eax]
mov al, byte [ebp + ecx - 0x3f]
xor al, byte [ebp - 0x40]
mov byte [ebp + ecx - 0x3f], al
inc ecx
cmp ecx, 0x2d
jb 0x100c9be0
push 0xffff00ff
lea eax, [ebp - 0x3f]
mov byte [ebp - 0x12], 0
push eax
call fcn.100e4e60
jmp case.default.0x100c9900
mov ecx, dword [edx]
mov edx, dword [ebp - 0x84]
sub ecx, dword [esi + 0x14]
lea eax, [edx + 4]
cmp eax, ecx
jbe 0x100c9c1e
xor eax, eax
jmp 0x100c9c29
push edx
lea ecx, [esi + 0x10]
call fcn.1004f3b0
mov eax, dword [eax]
add dword [esi + 8], 4
test eax, eax
je case.default.0x100c9900
movaps xmm0, xmmword [0x101ddc00]
xor ecx, ecx
movups xmmword [ebp - 0x3c], xmm0
push 0xffff00ff
movaps xmm0, xmmword [0x101ddb10]
push eax
movups xmmword [ebp - 0x2c], xmm0
mov dword [ebp - 0x1c], 0x80e4f1b
mov dword [ebp - 0x18], 0x1060e
mov al, byte [ebp + ecx - 0x3b]
xor al, byte [ebp - 0x3c]
mov byte [ebp + ecx - 0x3b], al
inc ecx
cmp ecx, 0x26
jb 0x100c9c61
sub esp, 0x1c
mov byte [ebp - 0x15], 0
mov edx, esp
lea ecx, [ebp - 0x3b]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100c9ca0
sub ecx, esi
lea eax, [ebp - 0x3b]
push ecx
push eax
mov ecx, edx
call fcn.100484d0
lea eax, [ebp - 0x7c]
push eax
call fcn.10052ec0
add esp, 0x24
mov dword [ebp - 4], 1
lea ecx, [eax + 4]
cmp dword [eax + 0x18], 0xf
jbe 0x100c9cd3
mov ecx, dword [ecx]
push ecx
call fcn.100e4e60
lea ecx, [ebp - 0x7c]
call fcn.100477d0
mov eax, dword [ebp - 0x7c]
push 8
push eax
mov dword [ebp - 0x7c], 0
call fcn.1013c8d0
add esp, 8
jmp case.default.0x100c9900
movaps xmm0, xmmword [0x101de790]
xor ecx, ecx
movups xmmword [ebp - 0x3c], xmm0
mov dword [ebp - 0x1c], 0x5c4f5a5a
movaps xmm0, xmmword [0x101de880]
movups xmmword [ebp - 0x2c], xmm0
mov dword [ebp - 0x18], 0x7504545
mov byte [ebp - 0x14], 0
mov al, byte [ebp + ecx - 0x3b]
xor al, byte [ebp - 0x3c]
mov byte [ebp + ecx - 0x3b], al
inc ecx
cmp ecx, 0x27
jb 0x100c9d25
push 0xffff4059
lea eax, [ebp - 0x3b]
mov byte [ebp - 0x14], 0
push eax
call fcn.100e4e60
jmp case.default.0x100c9900
lea ecx, [edx + 0x538]
inc eax
mov dword [ebp - 0x84], ecx
mov ecx, dword [esi + 0x18]
sub ecx, dword [esi + 0x14]
cmp eax, ecx
jbe 0x100c9d68
xor al, al
jmp 0x100c9d7b
push dword [ebp - 0x80]
lea ecx, [esi + 0x10]
call fcn.1004f3b0
mov edx, dword [0x10297f7c]
mov al, byte [eax]
inc dword [esi + 8]
test al, al
mov ecx, dword [ebp - 0x84]
setg al
mov byte [ecx], al
lea eax, [edx + 0x539]
mov ecx, dword [esi + 0x18]
sub ecx, dword [esi + 0x14]
mov dword [ebp - 0x84], eax
mov eax, dword [esi + 8]
inc eax
cmp eax, ecx
jbe 0x100c9da9
xor al, al
jmp 0x100c9dbd
mov eax, dword [esi + 8]
lea ecx, [esi + 0x10]
push eax
call fcn.1004f3b0
mov edx, dword [0x10297f7c]
mov al, byte [eax]
mov ecx, dword [ebp - 0x84]
inc dword [esi + 8]
mov byte [ecx], al
lea eax, [edx + 0x53c]
mov ecx, dword [esi + 0x18]
sub ecx, dword [esi + 0x14]
mov dword [ebp - 0x80], eax
lea eax, [edx + 0x53a]
mov dword [ebp - 0x84], eax
mov eax, dword [esi + 8]
add eax, 4
cmp eax, ecx
jbe 0x100c9df9
mov dword [ebp - 0x88], 0
jmp 0x100c9e13
mov eax, dword [esi + 8]
lea ecx, [esi + 0x10]
push eax
call fcn.1004f3b0
mov edx, dword [0x10297f7c]
mov eax, dword [eax]
mov dword [ebp - 0x88], eax
add dword [esi + 8], 4
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 8]
sub ecx, dword [esi + 0x14]
add eax, 2
cmp eax, ecx
jbe 0x100c9e2b
xor eax, eax
jmp 0x100c9e40
mov eax, dword [esi + 8]
lea ecx, [esi + 0x10]
push eax
call fcn.1004f3b0
mov edx, dword [0x10297f7c]
movzx eax, word [eax]
mov ecx, dword [ebp - 0x84]
add dword [esi + 8], 2
mov word [ecx], ax
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 8]
sub ecx, dword [esi + 0x14]
add eax, 2
cmp eax, ecx
jbe 0x100c9e61
xor eax, eax
jmp 0x100c9e76
mov eax, dword [esi + 8]
lea ecx, [esi + 0x10]
push eax
call fcn.1004f3b0
mov edx, dword [0x10297f7c]
movzx eax, word [eax]
mov ecx, dword [ebp - 0x80]
add dword [esi + 8], 2
mov word [ecx], ax
lea eax, [edx + 0x53e]
mov ecx, dword [esi + 0x18]
sub ecx, dword [esi + 0x14]
mov dword [ebp - 0x80], eax
lea eax, [edx + 0x540]
mov dword [ebp - 0x84], eax
mov eax, dword [esi + 8]
add eax, 2
cmp eax, ecx
jbe 0x100c9ea9
xor eax, eax
jmp 0x100c9ebe
mov eax, dword [esi + 8]
lea ecx, [esi + 0x10]
push eax
call fcn.1004f3b0
mov edx, dword [0x10297f7c]
movzx eax, word [eax]
mov ecx, dword [ebp - 0x84]
add dword [esi + 8], 2
mov word [ecx], ax
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 8]
sub ecx, dword [esi + 0x14]
add eax, 2
cmp eax, ecx
jbe 0x100c9edf
xor eax, eax
jmp 0x100c9ef4
mov eax, dword [esi + 8]
lea ecx, [esi + 0x10]
push eax
call fcn.1004f3b0
mov edx, dword [0x10297f7c]
movzx eax, word [eax]
add dword [esi + 8], 2
mov ecx, dword [ebp - 0x80]
mov word [ecx], ax
mov eax, dword [edx + 0x518]
mov byte [eax + 0xa], 1
mov eax, dword [ebp - 0x88]
mov ecx, dword [edx + 0x518]
mov dword [edx + 0x548], eax
mov dword [edx + 0x54c], 0
call fcn.10051dd0
mov ecx, dword [0x10297f7c]
cmp byte [ecx + 0x538], 0
jne case.default.0x100c9900
mov ecx, dword [ecx + 0x518]
call fcn.10051900
jmp case.default.0x100c9900
mov ecx, dword [esi + 0x18]
add eax, 4
sub ecx, dword [esi + 0x14]
cmp eax, ecx
jbe 0x100c9f5d
xor ecx, ecx
jmp 0x100c9f70
push dword [ebp - 0x80]
lea ecx, [esi + 0x10]
call fcn.1004f3b0
mov edx, dword [0x10297f7c]
mov ecx, dword [eax]
add dword [esi + 8], 4
mov eax, dword [edx + 0x518]
cmp byte [eax + 0xa], 0
jne 0x100c9f84
mov byte [eax + 0xa], 1
mov dword [edx + 0x548], ecx
mov ecx, dword [edx + 0x518]
mov dword [edx + 0x54c], 0
call fcn.10051900
mov eax, dword [0x10297f7c]
mov esi, dword [eax + 0x518]
push dword [esi + 4]
call fcn.100e10c0
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x100c9fc1
push 1
call dword [0x101d64b8]
mov byte [esi + 0x20], 0
jmp case.default.0x100c9900
mov eax, dword [edx + 0x518]
xor ecx, ecx
mov dword [edx + 0x538], 0xff00
mov dword [edx + 0x53e], ecx
mov word [edx + 0x53c], cx
mov dword [edx + 0x550], ecx
mov dword [edx + 0x554], ecx
mov dword [edx + 0x548], ecx
mov dword [edx + 0x54c], ecx
mov word [eax + 8], cx
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], ecx
mov esi, dword [edx + 0x518]
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x100ca026
push 0
call dword [0x101d64b8]
mov edx, dword [0x10297f7c]
mov byte [esi + 0x20], 1
mov ecx, dword [edx + 0x4e0]
test ecx, ecx
je case.default.0x100c9900
mov ecx, dword [ecx + 0x68]
test ecx, ecx
je case.default.0x100c9900
cmp byte [ecx + 0x10d], 0
je case.default.0x100c9900
push 0
call dword [0x101d64b8]
jmp case.default.0x100c9900
mov ecx, dword [esi + 0x18]
inc eax
sub ecx, dword [esi + 0x14]
cmp eax, ecx
jbe 0x100ca080
mov eax, dword [esi + 8]
inc eax
mov dword [ebp - 0x80], eax
mov dword [esi + 8], eax
lea eax, [esi + 0x18]
mov dword [ebp - 0x88], eax
lea eax, [esi + 0x14]
jmp 0x100ca0b9
push dword [ebp - 0x80]
lea ecx, [esi + 0x10]
call fcn.1004f3b0
mov ecx, dword [esi + 8]
mov edx, dword [0x10297f7c]
inc ecx
mov dword [ebp - 0x80], ecx
mov al, byte [eax]
mov dword [esi + 8], ecx
lea ecx, [esi + 0x18]
mov dword [ebp - 0x88], ecx
lea ecx, [esi + 0x14]
mov dword [ebp - 0x84], ecx
test al, al
jne 0x100ca147
mov eax, ecx
lea ecx, [edx + 0x53a]
mov dword [ebp - 0x84], ecx
mov ecx, dword [ebp - 0x88]
mov ecx, dword [ecx]
sub ecx, dword [eax]
mov eax, dword [ebp - 0x80]
add eax, 2
cmp eax, ecx
jbe 0x100ca0dd
xor eax, eax
jmp 0x100ca0f1
push dword [ebp - 0x80]
lea ecx, [esi + 0x10]
call fcn.1004f3b0
mov edx, dword [0x10297f7c]
movzx eax, word [eax]
mov ecx, dword [ebp - 0x84]
add dword [esi + 8], 2
mov word [ecx], ax
lea eax, [edx + 0x53c]
mov ecx, dword [esi + 0x18]
sub ecx, dword [esi + 0x14]
mov dword [ebp - 0x84], eax
mov eax, dword [esi + 8]
add eax, 2
cmp eax, ecx
jbe 0x100ca127
mov ecx, dword [ebp - 0x84]
xor eax, eax
jmp 0x100ca1cd
mov eax, dword [esi + 8]
lea ecx, [esi + 0x10]
push eax
call fcn.1004f3b0
mov edx, dword [0x10297f7c]
mov ecx, dword [ebp - 0x84]
movzx eax, word [eax]
jmp 0x100ca1cd
mov ecx, dword [ebp - 0x88]
lea eax, [edx + 0x53e]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0x84]
mov ecx, dword [ecx]
sub ecx, dword [eax]
mov eax, dword [ebp - 0x80]
add eax, 2
cmp eax, ecx
jbe 0x100ca171
xor eax, eax
jmp 0x100ca185
push dword [ebp - 0x80]
lea ecx, [esi + 0x10]
call fcn.1004f3b0
mov edx, dword [0x10297f7c]
movzx eax, word [eax]
mov ecx, dword [ebp - 0x8c]
add dword [esi + 8], 2
mov word [ecx], ax
lea eax, [edx + 0x540]
mov ecx, dword [esi + 0x18]
sub ecx, dword [esi + 0x14]
mov dword [ebp - 0x8c], eax
mov eax, dword [esi + 8]
add eax, 2
cmp eax, ecx
jbe 0x100ca1b2
xor eax, eax
jmp 0x100ca1c7
mov eax, dword [esi + 8]
lea ecx, [esi + 0x10]
push eax
call fcn.1004f3b0
mov edx, dword [0x10297f7c]
movzx eax, word [eax]
mov ecx, dword [ebp - 0x8c]
add dword [esi + 8], 2
mov word [ecx], ax
mov ecx, dword [edx + 0x518]
test ecx, ecx
je case.default.0x100c9900
cmp byte [ecx + 8], 0
je case.default.0x100c9900
cmp byte [ecx + 9], 0
jne case.default.0x100c9900
call fcn.10051a90
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1013c8c0
mov esp, ebp
pop ebp
ret