Function at 0x10004010
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x64
push ebx
push esi
push edi
mov dword [ebp - 0x4c], edx
mov edi, ecx
mov dword [ebp - 0x3c], edi
mov eax, 0xca3
mov word [ebp - 0xc], ax
mov dword [ebp - 0x34], 0
mov ecx, dword [0x1000f058]
mov eax, dword [0x1000f05c]
movzx eax, word [0x1000f078]
mov byte [ebp - 2], cl
mov byte [ebp - 5], 0x4e
mov dword [ebp - 0x44], eax
movzx eax, word [0x1000f054]
mov ecx, dword [0x1000f020]
mov byte [ebp - 4], al
movsx eax, byte [0x1000f003]
mov dword [ebp - 0x40], eax
movzx eax, byte [0x1000f01a]
cdq
mov dword [ebp - 0x60], eax
mov eax, dword [0x1000f040]
mov dword [ebp - 0x5c], edx
mov word [ebp - 0x14], ax
movsx eax, word [0x1000f018]
mov dword [ebp - 0x48], eax
mov al, byte [0x1000f064]
mov byte [ebp - 4], al
mov esi, dword [0x1000f058]
movsx eax, byte [0x1000f01e]
cdq
mov dword [ebp - 0x18], ecx
mov ebx, eax
mov byte [ebp - 3], cl
mov ecx, dword [0x1000f05c]
mov word [ebp - 0x10], si
mov byte [ebp - 1], 0x2a
mov dword [ebp - 0x58], 0xb913f2ed
mov dword [ebp - 0x54], 0x9e232
mov byte [ebp - 6], 0x35
mov ax, word [0x1000f054]
mov word [ebp - 0x14], ax
mov al, byte [0x1000f098]
mov byte [ebp - 6], al
mov byte [ebp - 6], 0xef
movsx eax, byte [ebp - 5]
sub eax, 0x657e6cf8
mov dword [ebp - 0x34], edx
cdq
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], edx
cmp word [ebp - 0xc], 0
mov dword [ebp - 0x1c], 0xad81
jne 0x10004106
mov ecx, 1
xor esi, esi
jmp 0x10004114
xorps xmm0, xmm0
movlpd qword [ebp - 0x30], xmm0
mov esi, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x30]
movsx eax, byte [0x1000f003]
cdq
add eax, 0xad81
adc edx, 0
add ecx, ebx
adc esi, dword [ebp - 0x34]
push esi
push ecx
push edx
push eax
call fcn.1000d360
mov cl, byte [ebp - 4]
xor ebx, ebx
test cl, cl
sete bl
xor ecx, ecx
add ebx, eax
adc ecx, edx
or ebx, ecx
jne 0x1000414d
lea eax, [ebx + 1]
xor ecx, ecx
jmp 0x1000415b
xorps xmm0, xmm0
movlpd qword [ebp - 0x38], xmm0
mov ecx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x38]
mov dword [0x1000f020], eax
sub esp, 0xc
mov eax, dword [0x100b0edc]
mov dword [0x1000f024], ecx
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
add eax, 0x2a7
mov dword [ebp - 0x34], eax
mov eax, 0x5cf9
mov word [0x1000f050], ax
mov eax, dword [ebp - 0x20]
add eax, 0x128
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x20]
add eax, 0x3e9
mov dword [ebp - 0x2c], eax
call fcn.100016a0
cbw
add esp, 0xc
mov word [section..data], ax
cmp word [section..data], 0
jne 0x100041c7
mov dword [ebp - 0x1c], 4
mov dword [ebp - 0x34], 0
jmp 0x100041e0
mov al, byte [ebp - 3]
cmp al, byte [0x1000f007]
jae 0x100041e0
mov cl, byte [ebp - 1]
mov al, byte [ebp - 1]
sub cl, 0x7f
and al, cl
mov byte [ebp - 1], al
mov ebx, dword [edi + 0x3c]
sub esp, 8
add ebx, edi
call fcn.100012d0
add esp, 8
mov word [str._k], ax
test ax, ax
je 0x1000420a
mov al, byte [0x1000f007]
add al, 0x40
add al, byte [ebp - 0x18]
mov byte [0x1000f007], al
mov ecx, dword [0x1000f028]
mov eax, dword [0x1000f02c]
mov edx, dword [ebp - 0x60]
mov eax, dword [ebp - 0x5c]
add dl, cl
mov eax, dword [ebp - 0x18]
movzx ecx, byte [0x1000f020]
mov edi, dword [ebx + 0xa0]
add edi, dword [ebp - 0x3c]
movzx eax, al
imul ecx, eax
mov dword [ebp - 0x20], edi
and cl, dl
mov byte [ebp - 1], cl
imul eax, dword [0x1000f09c], 0xbe0b
mov ebx, dword [ebx + 0xa4]
mov dword [ebp - 0x34], ebx
mov word [0x1000f068], ax
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x2c]
add ecx, 0xb6
imul eax, ecx
cmp eax, dword [ebp - 0x24]
je 0x10004730
mov eax, 0xc
mov word [0x1000f090], ax
movzx eax, word [0x1000f090]
movzx ecx, byte [ebp - 2]
add ecx, eax
movzx eax, word [0x1000f068]
cmp eax, ecx
jne 0x10004350
mov ebx, dword [ebp - 0x1c]
mov edi, 0xc
nop
movzx ecx, word [0x1000f074]
movsx ax, byte [0x1000f003]
xor ax, cx
mov word [0x1000f074], ax
movzx eax, word [0x1000f068]
mov ecx, dword [0x1000f058]
mov esi, dword [0x1000f05c]
cdq
add ecx, eax
mov dword [0x1000f010], ecx
adc esi, edx
mov dword [0x1000f014], esi
movsx eax, word [ebp - 0xc]
cdq
mov ecx, eax
mov esi, edx
movzx eax, byte [0x1000f005]
add ecx, 0x1cc9644
cdq
adc esi, 0xfb16b
cmp eax, ecx
jne 0x1000434a
cmp edx, esi
jne 0x1000434a
movzx eax, byte [0x1000f004]
mov cx, word [0x1000f094]
add cx, cx
add ax, cx
mov word [0x1000f094], ax
lea eax, [ebx + 0x741]
mov word [0x1000f048], ax
mov word [0x1000f090], di
movzx eax, word [0x1000f090]
movzx ecx, byte [ebp - 2]
add ecx, eax
movzx eax, word [0x1000f068]
cmp eax, ecx
je 0x100042a0
mov edi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x34]
test edi, edi
je 0x10004730
test ebx, ebx
je 0x10004730
mov eax, dword [0x100b0edc]
mov ecx, 0x3e4
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
add eax, 0x237
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
add eax, 0x155
mov dword [ebp - 0x24], eax
mov byte [ebp - 2], 0x80
movzx eax, byte [0x1000f005]
cdq
add dword [0x1000f088], eax
adc dword [0x1000f08c], edx
mov edx, 0x248e
mov ax, word [ebp - 0xc]
xor ax, dx
mov word [ebp - 0xc], ax
movzx eax, byte [0x1000f002]
imul eax, dword [0x1000f040]
not eax
mov dword [0x1000f028], eax
mov dword [0x1000f02c], 0
sub ecx, 1
jne 0x100043a0
mov eax, dword [ebp - 0x20]
mov ecx, 0x2c4
add eax, 0x308
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x24]
sub ecx, eax
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x2c]
imul eax, ecx
mov ecx, dword [ebp - 0x20]
add ecx, dword [ebp - 0x24]
imul edx, eax
mov eax, dword [ebp - 0x2c]
add eax, ecx
cmp edx, eax
je 0x10004730
mov ax, word [ebp - 0x14]
mov ebx, dword [edi + 4]
movsx esi, al
mov eax, esi
mov dword [ebp - 0x24], esi
cdq
add eax, 0x23e3
mov dword [ebp - 0x58], eax
adc edx, 0
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x60], 2
mov dword [ebp - 0x5c], 0
test ebx, ebx
je 0x10004730
movsx eax, byte [0x1000f01e]
cdq
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x54]
cmp edx, ecx
ja 0x10004483
jb 0x10004453
cmp dword [ebp - 0x2c], eax
jae 0x10004483
cmp word [ebp - 0x10], 0
je 0x10004483
mov ecx, dword [0x1000f088]
mov esi, dword [0x1000f08c]
movsx eax, byte [ebp - 4]
shld esi, ecx, 1
cdq
add ecx, ecx
add eax, ecx
mov dword [0x1000f088], eax
adc edx, esi
mov esi, dword [ebp - 0x24]
mov dword [0x1000f08c], edx
mov eax, dword [0x100b0edc]
mov dword [ebp - 0x24], eax
call fcn.10001ba0
cmp byte [0x1000f003], 0
je 0x100044c3
mov eax, dword [ebp - 0x18]
movzx eax, al
mov word [0x1000f064], ax
movzx eax, word [section..data]
add eax, 0xfffff4b3
or ax, word [section..data]
mov word [section..data], ax
jmp 0x100045c2
cmp word [0x1000f018], 0
jne 0x10004510
mov eax, 0x7d11
mov word [ebp - 0x14], ax
mov eax, dword [ebp - 0x40]
mov esi, dword [0x1000f008]
mov ecx, dword [0x1000f00c]
cdq
push edx
push eax
push ecx
push esi
call fcn.1000d360
mov ecx, dword [0x1000f008]
mov esi, dword [0x1000f00c]
sub ecx, eax
mov dword [0x1000f008], ecx
sbb esi, edx
mov dword [0x1000f00c], esi
jmp 0x100045c2
mov ecx, dword [0x1000f028]
mov eax, dword [0x1000f02c]
add ecx, 1
adc eax, 0
or ecx, eax
je 0x100045a4
mov eax, dword [ebp - 0x18]
xor ecx, ecx
cmp word [0x1000f064], cx
movzx eax, al
cmove ecx, eax
movsx eax, word [0x1000f018]
sub ecx, eax
xor edx, edx
movsx eax, word [ebp - 0x10]
cmp ecx, eax
mov ax, word [0x1000f074]
sete dl
xor ecx, ecx
test ax, ax
sete cl
xor eax, eax
and ecx, esi
cmp word [ebp - 0x44], ax
sete al
sub ecx, eax
movzx eax, byte [ebp - 2]
add ecx, edx
add eax, ecx
jne 0x1000457d
mov eax, 1
xor ecx, ecx
jmp 0x1000458b
xorps xmm0, xmm0
movlpd qword [ebp - 0x58], xmm0
mov ecx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x58]
mov dword [0x1000f030], eax
mov eax, dword [0x1000f06c]
add al, 0x1e
mov dword [0x1000f034], ecx
mov byte [0x1000f003], al
jmp 0x100045c2
cmp word [0x1000f074], 0
je 0x100045c2
mov eax, dword [0x1000f09c]
add eax, 0x41de
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], 0
mov eax, dword [ebp - 0x24]
add eax, 0x93
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x24]
add eax, 0x2f1
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x60]
mov eax, dword [ebp - 0x5c]
or ecx, eax
jne 0x100045f3
mov ecx, dword [ebp - 0x60]
mov eax, dword [ebp - 0x5c]
shrd ecx, eax, 6
mov word [0x1000f080], cx
mov eax, dword [ebp - 0x24]
add eax, 0x172
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x44]
and eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x2c]
imul ecx, eax
mov eax, dword [ebp - 0x20]
sub eax, 0xb5
imul edx, ecx
cmp eax, edx
je 0x10004730
movzx eax, word [0x1000f0a4]
mov ecx, 0xb4d
add ax, cx
mov word [ebp - 0xc], ax
mov byte [0x1000f007], 1
mov al, byte [0x1000f007]
mov esi, dword [ebp - 0x34]
mov byte [0x1000f007], 1
mov ax, word [0x1000f050]
movzx eax, word [ebp - 0xc]
sub byte [ebp - 0x18], al
movzx eax, byte [ebp - 3]
mov dword [ebp - 0x44], eax
nop dword [eax]
mov ax, word [ebp - 0xc]
xor edx, edx
movsx ecx, word [str._k]
sub esi, ebx
test ax, ax
mov eax, dword [ebp - 0x48]
cmove edx, ecx
imul eax, dword [ebp - 0x44]
cmp eax, edx
jge 0x1000468c
mov eax, dword [ebp - 0x1c]
add eax, 0xfffff706
mov word [ebp - 0xc], ax
push dword [ebp - 0x4c]
mov ecx, dword [edi]
lea eax, [edi + 8]
add ecx, dword [ebp - 0x3c]
lea edx, [ebx - 8]
push eax
shr edx, 1
call fcn.100033a0
mov edi, eax
add esp, 8
test edi, edi
je 0x100046e3
mov ebx, dword [edi + 4]
mov dword [0x1000f008], 0xf6660567
mov dword [0x1000f00c], 0x16e31
test ebx, ebx
je 0x100046d1
test esi, esi
jne 0x10004660
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov al, byte [ebp - 1]
mov eax, dword [0x1000f09c]
mov al, byte [ebp - 1]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ax, word [ebp - 0xc]
add ax, word [ebp - 0x1c]
mov word [ebp - 0xc], ax
mov ecx, dword [0x1000f028]
mov eax, dword [0x1000f02c]
xor cl, byte [0x1000f088]
cmp byte [ebp - 3], 0
sete al
sub cl, al
mov eax, dword [0x1000f09c]
sub cl, byte [ebp - 0x18]
add al, cl
mov ecx, dword [ebp - 0x40]
add cl, 0x19
add cl, al
not cl
mov byte [ebp - 1], cl
mov al, byte [0x1000f005]
mov cl, byte [ebp - 2]
add cl, al
mov byte [0x1000f005], cl
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret