Function at 0x1006e900
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1022d690
mov eax, dword fs:[0]
push eax
sub esp, 0x6c
mov eax, dword [0x1029912c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov esi, dword [ebp + 8]
mov ebx, dword [ebp + 0x10]
push 0x102a8ad8
push 0x1003c720
push 0x102a8ae0
mov dword [ebp - 0x58], esi
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0x48], 0
call fcn.101d1ed1
add esp, 0xc
test eax, eax
je 0x1006f0e5
mov dword [ebx], 0
mov dword [ebx + 4], 0x102a8ad8
mov eax, dword [edi + 0x5c]
cmp eax, 4
je 0x1006f0c3
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 0x48]
cmp eax, 5
je 0x1006f0c5
cmp edx, ecx
jb 0x1006e995
cmp dword [edi + 0x18], 0
jne 0x1006f0c5
test eax, eax
jne 0x1006eb02
mov eax, ecx
mov ecx, dword [edi + 0x18]
sub eax, edx
je 0x1006e9f4
test ecx, ecx
je 0x1006e9f4
cmp eax, 1
mov al, byte [esi + edx]
jbe 0x1006e9dc
cmp ecx, 2
jne 0x1006e9ce
mov byte [edi + 0xc], al
mov al, byte [esi + edx + 1]
mov byte [edi + 0xd], al
mov eax, ecx
mov dword [edi + 0x18], 0
xor ecx, ecx
jmp 0x1006e9f6
dec ecx
mov byte [edi + 0xd], al
mov dword [edi + 0x18], ecx
mov eax, 1
jmp 0x1006e9f6
cmp ecx, 2
jne 0x1006e9ce
mov byte [edi + 0xc], al
mov eax, 1
mov dword [edi + 0x18], 1
mov ecx, eax
jmp 0x1006e9f6
xor eax, eax
add edx, eax
mov dword [ebp - 0x48], edx
test ecx, ecx
jne 0x1006f08e
mov dl, byte [edi + 0xc]
mov bl, byte [edi + 5]
movzx ecx, dl
and ecx, 0xf
cmp ecx, 8
jb 0x1006ea27
mov al, byte [edi + 0xd]
and al, 0x7f
cmp al, 0x7d
jbe 0x1006ea27
mov esi, 8
jmp 0x1006eaa9
test dl, 0x40
jne 0x1006eaa4
test dl, 0x30
jne 0x1006eaa4
cmp ecx, 3
jb 0x1006ea3b
cmp ecx, 7
jbe 0x1006ea40
cmp ecx, 0xb
jb 0x1006ea47
mov esi, 7
jmp 0x1006eaa9
cmp ecx, 8
jb 0x1006ea57
test dl, dl
js 0x1006ea57
mov esi, 0xa
jmp 0x1006eaa9
cmp dword [edi + 0x20], 0
jne 0x1006ea66
test ecx, ecx
jne 0x1006ea76
lea esi, [ecx + 0xb]
jmp 0x1006eaa9
cmp ecx, 8
jae 0x1006ea76
test ecx, ecx
je 0x1006ea76
mov esi, 0xb
jmp 0x1006eaa9
test bl, bl
je 0x1006ea87
cmp byte [edi + 0xd], 0
jl 0x1006ea94
mov esi, 0xc
jmp 0x1006eaa9
cmp byte [edi + 0xd], 0
jge 0x1006ea94
mov esi, 0xd
jmp 0x1006eaa9
lea ecx, [ebp - 0x54]
call fcn.1003c770
mov eax, dword [ebp - 0x50]
mov esi, dword [ebp - 0x54]
jmp 0x1006eab4
mov esi, 9
mov dword [ebp - 0x54], esi
call fcn.10029e40
mov dword [ebp - 0x50], eax
mov ebx, dword [ebp - 0x5c]
mov dword [ebx], esi
mov dword [ebx + 4], eax
test esi, esi
jne 0x1006f0ac
mov dword [edi + 0x5c], 1
mov dword [edi + 0x1c], esi
mov dl, byte [edi + 0xd]
mov al, dl
and al, 0x7f
cmp al, 0x7e
jne 0x1006eade
lea ecx, [esi + 4]
jmp 0x1006eaec
xor ecx, ecx
cmp al, 0x7f
sete cl
lea ecx, [ecx*8 + 2]
test dl, dl
lea eax, [ecx + 4]
mov edx, dword [ebp - 0x48]
cmovns eax, ecx
sub eax, 2
mov dword [edi + 0x18], eax
jmp 0x1006f08b
cmp eax, 1
jne 0x1006ef0e
mov eax, dword [edi + 0x1c]
mov esi, ecx
mov ecx, dword [ebp - 0x58]
sub esi, edx
add ecx, edx
cmp esi, dword [edi + 0x18]
cmovae esi, dword [edi + 0x18]
add eax, 0x4c
push esi
add eax, edi
push ecx
push eax
call fcn.101ecee0
mov edx, dword [ebp - 0x48]
add esp, 0xc
add dword [edi + 0x1c], esi
add edx, esi
sub dword [edi + 0x18], esi
cmp dword [edi + 0x18], 0
mov dword [ebp - 0x48], edx
ja 0x1006f08b
mov bl, byte [edi + 0xd]
movq xmm0, qword [edi + 0x4c]
and bl, 0x7f
mov eax, dword [edi + 0x54]
movq qword [ebp - 0x44], xmm0
mov dword [ebp - 0x3c], eax
cmp bl, 0x7d
ja 0x1006eb67
movzx eax, bl
cdq
jmp 0x1006ebaa
lea eax, [ebp - 0x44]
cmp bl, 0x7e
jne 0x1006eb8d
push 2
push eax
lea eax, [ebp - 0x20]
push eax
call fcn.101ecee0
add esp, 0xc
push dword [ebp - 0x20]
call dword [sym.imp.WS2_32.dll_ntohs]
movzx eax, ax
cdq
jmp 0x1006ebaa
push 8
push eax
lea eax, [ebp - 0x30]
push eax
call fcn.101ecee0
add esp, 0xc
push dword [ebp - 0x2c]
push dword [ebp - 0x30]
call fcn.100299e0
add esp, 8
cmp bl, 0x7e
jne 0x1006ebc6
test edx, edx
ja 0x1006ebd8
jb 0x1006ebba
cmp eax, 0x7d
ja 0x1006ebd8
call fcn.10029e40
mov esi, 0xe
jmp 0x1006ec10
cmp bl, 0x7f
jne 0x1006ebd8
test edx, edx
ja 0x1006ebd8
jb 0x1006ebba
cmp eax, 0xffff
jmp 0x1006ebb8
xor eax, eax
or eax, edx
je 0x1006ebea
call fcn.10029e40
mov esi, 0xf
jmp 0x1006ec10
push 0x102a8ad8
push 0x1003c720
push 0x102a8ae0
xor esi, esi
call fcn.101d1ed1
add esp, 0xc
test eax, eax
je 0x1006f0e5
mov eax, 0x102a8ad8
mov ecx, dword [ebp - 0x5c]
mov dword [ecx], esi
mov dword [ecx + 4], eax
test esi, esi
jne 0x1006f0ac
mov al, byte [edi + 0xd]
lea esi, [edi + 0x4c]
and al, 0x7f
mov dword [edi + 0x5c], 3
cmp al, 0x7d
ja 0x1006ec39
movzx eax, al
cdq
jmp 0x1006ec78
cmp al, 0x7e
jne 0x1006ec5b
push 2
lea eax, [ebp - 0x24]
push esi
push eax
call fcn.101ecee0
add esp, 0xc
push dword [ebp - 0x24]
call dword [sym.imp.WS2_32.dll_ntohs]
movzx eax, ax
cdq
jmp 0x1006ec78
push 8
lea eax, [ebp - 0x38]
push esi
push eax
call fcn.101ecee0
add esp, 0xc
push dword [ebp - 0x34]
push dword [ebp - 0x38]
call fcn.100299e0
add esp, 8
mov ebx, eax
mov dword [ebp - 0x64], edx
movzx eax, byte [edi + 0xc]
and eax, 0xf
mov dword [edi + 0x18], ebx
mov dword [ebp - 0x4c], eax
cmp eax, 8
jb 0x1006ed87
mov al, byte [edi + 0xd]
test al, al
js 0x1006eca1
xor esi, esi
mov dword [ebp - 0x14], esi
jmp 0x1006eccf
and al, 0x7f
cmp al, 0x7e
jne 0x1006ecae
mov ecx, 2
jmp 0x1006ecba
xor ecx, ecx
cmp al, 0x7f
mov eax, 8
cmove ecx, eax
lea eax, [ecx + esi]
push 4
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.101ecee0
mov esi, dword [ebp - 0x14]
add esp, 0xc
mov ecx, dword [edi + 0x10]
lea eax, [ebp - 0x70]
push ebx
push dword [ebp - 0x4c]
push eax
call fcn.10017860
mov ebx, dword [ebp - 0x6c]
test ebx, ebx
je 0x1006eced
lock inc dword [ebx + 4]
mov ebx, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x70]
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 4], 0
test ebx, ebx
je 0x1006ed1f
or eax, 0xffffffff
lock xadd dword [ebx + 4], eax
jne 0x1006ed1f
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
or eax, 0xffffffff
lock xadd dword [ebx + 8], eax
jne 0x1006ed1f
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
mov eax, dword [ebp - 0x4c]
lea ecx, [edi + 0x34]
mov dword [ecx], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 0x4c], eax
mov dword [ecx + 4], ebx
mov ebx, eax
mov dword [ebp - 4], 1
test ebx, ebx
je 0x1006ed61
or eax, 0xffffffff
lock xadd dword [ebx + 4], eax
jne 0x1006ed61
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
or eax, 0xffffffff
lock xadd dword [ebx + 8], eax
jne 0x1006ed5e
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
lea ecx, [edi + 0x34]
mov dword [ecx + 8], esi
mov dword [ecx + 0xc], 0
mov dword [ecx + 0x10], 0
mov ebx, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x48]
mov dword [ebp - 4], 0xffffffff
mov dword [edi + 0x48], ecx
jmp 0x1006f08b
mov eax, dword [edi + 0x20]
test eax, eax
jne 0x1006ee8f
cmp ebx, dword [edi + 8]
ja 0x1006f09b
mov al, byte [edi + 0xd]
test al, al
js 0x1006eda9
xor esi, esi
mov dword [ebp - 0x18], esi
jmp 0x1006edd7
and al, 0x7f
cmp al, 0x7e
jne 0x1006edb6
mov ecx, 2
jmp 0x1006edc2
xor ecx, ecx
cmp al, 0x7f
mov eax, 8
cmove ecx, eax
lea eax, [ecx + esi]
push 4
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.101ecee0
mov esi, dword [ebp - 0x18]
add esp, 0xc
mov ecx, dword [edi + 0x10]
lea eax, [ebp - 0x78]
push ebx
push dword [ebp - 0x4c]
push eax
call fcn.10017860
mov ebx, dword [ebp - 0x74]
test ebx, ebx
je 0x1006edf5
lock inc dword [ebx + 4]
mov ebx, dword [ebp - 0x74]
mov ecx, dword [ebp - 0x78]
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 4], 3
test ebx, ebx
je 0x1006ee27
or eax, 0xffffffff
lock xadd dword [ebx + 4], eax
jne 0x1006ee27
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
or eax, 0xffffffff
lock xadd dword [ebx + 8], eax
jne 0x1006ee27
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
mov eax, dword [ebp - 0x4c]
lea ecx, [edi + 0x20]
mov dword [ecx], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 0x4c], eax
mov dword [ecx + 4], ebx
mov ebx, eax
mov dword [ebp - 4], 4
test ebx, ebx
je 0x1006ee69
or eax, 0xffffffff
lock xadd dword [ebx + 4], eax
jne 0x1006ee69
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
or eax, 0xffffffff
lock xadd dword [ebx + 8], eax
jne 0x1006ee66
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
lea ecx, [edi + 0x20]
mov dword [ecx + 8], esi
mov dword [ecx + 0xc], 0
mov dword [ecx + 0x10], 0
mov ebx, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x48]
mov dword [ebp - 4], 0xffffffff
mov dword [edi + 0x48], ecx
jmp 0x1006f08b
lea esi, [eax + 0x38]
mov eax, dword [esi + 0x10]
add eax, ebx
cmp eax, dword [edi + 8]
ja 0x1006f09b
mov al, byte [edi + 0xd]
test al, al
js 0x1006eeae
xor eax, eax
mov dword [ebp - 0x1c], eax
jmp 0x1006eee4
and al, 0x7f
cmp al, 0x7e
jne 0x1006eebb
mov edx, 2
jmp 0x1006eec7
xor edx, edx
cmp al, 0x7f
mov eax, 8
cmove edx, eax
lea ecx, [edi + 0x4c]
add ecx, edx
lea eax, [edi + 0x50]
sub edx, ecx
add eax, edx
push eax
push ecx
lea eax, [ebp - 0x1c]
push eax
call fcn.101ecee0
mov eax, dword [ebp - 0x1c]
add esp, 0xc
mov dword [edi + 0x28], eax
xor edx, edx
mov eax, dword [esi + 0x10]
mov ecx, esi
add eax, ebx
setb dl
neg edx
or edx, eax
push edx
call fcn.10008310
mov ebx, dword [ebp - 0x5c]
lea ecx, [edi + 0x20]
mov edx, dword [ebp - 0x48]
mov dword [edi + 0x48], ecx
jmp 0x1006f08b
cmp eax, 2
jne 0x1006ef1f
mov dword [edi + 0x5c], 3
jmp 0x1006f08e
cmp eax, 3
jne 0x1006f0b1
mov eax, dword [edi + 0x18]
mov esi, ecx
sub esi, edx
cmp esi, eax
cmovae esi, eax
test esi, esi
je 0x1006f001
mov ebx, dword [ebp - 0x58]
add ebx, edx
cmp byte [edi + 0xd], 0
mov dword [ebp - 0x64], ebx
jge 0x1006ef83
mov eax, dword [edi + 0x48]
xor ecx, ecx
mov edx, dword [eax + 8]
mov dword [ebp - 0x4c], edx
test esi, esi
je 0x1006ef74
nop dword [eax]
mov eax, ecx
and eax, 3
mov al, byte [ebp + eax - 0x4c]
xor byte [ecx + ebx], al
inc ecx
cmp ecx, esi
jb 0x1006ef60
mov eax, dword [edi + 0x48]
mov ecx, esi
and ecx, 3
je 0x1006ef80
shl ecx, 3
ror edx, cl
mov dword [eax + 8], edx
mov eax, dword [edi + 0x48]
push esi
push dword [ebp - 0x64]
mov ebx, dword [eax]
mov eax, dword [ebx + 0x48]
add ebx, 0x38
mov ecx, ebx
mov dword [ebp - 0x4c], eax
call fcn.10006860
mov eax, dword [edi + 0x48]
mov eax, dword [eax]
cmp dword [eax + 0x50], 1
jne 0x1006efea
mov edx, dword [ebx + 0x14]
mov ecx, ebx
cmp edx, 0x10
jb 0x1006efb3
mov ecx, dword [ebx]
mov eax, dword [ebx + 0x10]
add eax, ecx
cmp edx, 0x10
jb 0x1006efbf
mov ebx, dword [ebx]
mov ecx, dword [ebp - 0x4c]
add ecx, ebx
push eax
push ecx
mov ecx, dword [edi + 0x48]
add ecx, 0xc
call fcn.1001d660
test al, al
jne 0x1006efea
call fcn.10029e40
mov ebx, dword [ebp - 0x5c]
xor esi, esi
mov dword [ebx], 0x10
mov dword [ebx + 4], eax
jmp 0x1006eff0
sub dword [edi + 0x18], esi
mov ebx, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x48]
add edx, esi
cmp dword [ebx], 0
mov dword [ebp - 0x48], edx
jne 0x1006f0c5
cmp dword [edi + 0x18], 0
ja 0x1006f08b
mov al, byte [edi + 0xc]
test al, al
jns 0x1006f068
and al, 0xf
cmp al, 1
jne 0x1006f02d
mov eax, dword [edi + 0x48]
cmp dword [eax + 0xc], 0
je 0x1006f02d
mov esi, 0x10
call fcn.10029e40
jmp 0x1006f05a
push 0x102a8ad8
push 0x1003c720
push 0x102a8ae0
mov dword [edi + 0x5c], 4
xor esi, esi
call fcn.101d1ed1
add esp, 0xc
test eax, eax
je 0x1006f0e5
mov eax, 0x102a8ad8
mov edx, dword [ebp - 0x48]
mov dword [ebx], esi
mov dword [ebx + 4], eax
test esi, esi
jne 0x1006f0c5
jmp 0x1006f08b
mov dword [edi + 0x5c], 0
xorps xmm0, xmm0
mov dword [edi + 0x18], 2
mov word [edi + 0xc], 0
movq qword [edi + 0x4c], xmm0
mov dword [edi + 0x54], 0
mov esi, dword [ebp - 0x58]
mov eax, dword [edi + 0x5c]
cmp eax, 4
je 0x1006f0c5
jmp 0x1006e978
call fcn.10029e40
mov ecx, dword [ebp - 0x5c]
mov dword [ecx], 4
mov dword [ecx + 4], eax
mov edx, dword [ebp - 0x48]
jmp 0x1006f0c5
call fcn.10029e40
mov dword [ebx + 4], eax
xor eax, eax
mov dword [ebx], 1
jmp 0x1006f0c7
xor edx, edx
mov eax, edx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.101d506b
mov esp, ebp
pop ebp
ret 0xc
call fcn.101f7e31
int3