Function at 0x10043880
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x264
mov eax, dword [0x1007b210]
xor eax, ebp
mov dword [ebp - 4], eax
xor eax, eax
mov dword [ebp - 0x214], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax*4 + 0x10070914]
imul eax, dword [ebp + 0x1c]
push ebx
push esi
mov esi, dword [ebp + 0xc]
sar eax, 6
push edi
mov edi, edx
xor edx, edx
mov dword [ebp - 0x22c], eax
or eax, 0xffffffff
mov dword [ebp - 0x25c], edi
mov dword [ebp - 0x264], ecx
mov dword [ebp - 0x248], esi
mov dword [ebp - 0x23c], eax
mov dword [ebp - 0x254], 0x1000
mov dword [ebp - 0x244], eax
mov dword [ebp - 0x224], edx
cmp dword [ebp + 0x24], edx
je 0x10043933
push ecx
call dword [0x100f0f88]
imul eax, dword [ebp + 0x20]
mov edx, 0x8000
add esp, 4
add eax, eax
mov ecx, edx
lea esp, [esp]
mov ebx, ecx
imul ebx, ecx
cmp ebx, eax
jbe 0x1004391b
xor ecx, edx
shr edx, 1
je 0x10043923
or ecx, edx
jmp 0x10043910
add ecx, 0x30
shr ecx, 6
mov dword [ebp - 0x24c], ecx
xor edx, edx
jmp 0x10043939
mov dword [ebp - 0x24c], edx
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x108], 0x1000
cmp eax, edx
jl 0x10043969
lea ebx, [ebx]
movzx ecx, word [esi + eax*2]
cmp word [edi + ecx*2], dx
jne 0x1004395f
dec eax
jns 0x10043950
jmp 0x10043969
mov ecx, eax
mov dword [ebp + 0x14], eax
cmp eax, 3
jge 0x10043971
mov ecx, 3
mov dword [ebp + 0x14], ecx
xor eax, eax
mov dword [ebp - 0x210], eax
cmp ecx, edx
jl 0x10043f63
mov dword [ebp - 0x21c], edx
jmp 0x1004399c
mov edi, dword [ebp - 0x25c]
mov esi, dword [ebp - 0x248]
movzx ecx, word [esi + eax*2]
mov edx, dword [ebp + 0x10]
add ecx, ecx
movzx eax, word [ecx + edx]
imul eax, dword [ebp + 8]
mov edx, dword [ebp - 0x264]
movsx edi, word [ecx + edi]
sar eax, 4
lea esi, [eax - 1]
lea ebx, [eax + eax]
or esi, 1
cmp dword [ebp + 0x24], 0
lea eax, [esi + ebx]
mov dword [ebp - 0x220], eax
movsx eax, word [ecx + edx]
mov dword [ebp - 0x218], eax
mov dword [ebp - 0x240], edi
je 0x10043a27
mov ecx, dword [ebp - 0x248]
mov edx, dword [ebp - 0x210]
mov eax, dword [ebp - 0x22c]
movzx edi, word [ecx + edx*2]
mov edx, dword [ebp - 0x218]
push eax
mov eax, dword [ebp - 0x24c]
call fcn.100437f0
mov edi, dword [ebp - 0x240]
mov dword [ebp - 0x258], eax
mov eax, dword [ebp - 0x218]
mov ecx, dword [ebp - 0x258]
add esp, 4
jmp 0x10043a39
mov ecx, eax
imul ecx, eax
imul ecx, dword [ebp - 0x22c]
mov dword [ebp - 0x258], ecx
add dword [ebp - 0x224], ecx
lea ecx, [edi + 1]
mov dword [ebp - 0x228], 0xf0000000
cmp ecx, 3
jae 0x10043bb7
mov ecx, dword [ebp - 0x21c]
lea ecx, [ebp + ecx - 0x20a]
mov dword [ebp - 0x218], ecx
test eax, eax
jns 0x10043a7d
or edx, 0xffffffff
mov word [ecx], dx
mov ecx, dword [ebp - 0x220]
lea edx, [eax + ecx]
jmp 0x10043a8d
mov edx, 1
mov word [ecx], dx
mov edx, dword [ebp - 0x220]
sub edx, eax
cmp dword [ebp + 0x24], 0
mov esi, dword [ebp - 0x210]
je 0x10043aba
mov ecx, dword [ebp - 0x248]
mov eax, dword [ebp - 0x22c]
movzx edi, word [ecx + esi*2]
push eax
mov eax, dword [ebp - 0x24c]
call fcn.100437f0
add esp, 4
jmp 0x10043ac6
mov eax, edx
imul eax, edx
imul eax, dword [ebp - 0x22c]
mov ecx, dword [ebp - 0x21c]
lea edx, [ebp + ecx - 0x20c]
mov edi, 1
mov dword [ebp - 0x220], edx
mov word [edx], di
mov edx, dword [ebp + ecx - 0x108]
mov ecx, esi
sub ecx, dword [ebp - 0x23c]
mov dword [ebp - 0x240], eax
lea eax, [edx + eax + 0x1800]
mov dword [ebp - 0x228], eax
test ecx, ecx
jle 0x10043b96
sub esi, ecx
lea ebx, [ebp + esi*4 - 0x104]
mov edx, 0x10070860
dec edx
mov esi, 0x10070760
sub esi, edx
dec esi
lea eax, [edx + ecx]
mov dword [ebp - 0x250], esi
jmp 0x10043b30
mov edx, dword [ebp - 0x250]
movzx edx, byte [edx + eax]
mov esi, dword [ebx]
add esi, dword [ebp - 0x240]
movzx edi, byte [eax]
shl edx, 0xb
shl edi, 0xb
add edx, esi
add edi, esi
cmp edx, dword [ebp - 0x228]
jae 0x10043b66
mov dword [ebp - 0x228], edx
mov edx, dword [ebp - 0x220]
mov word [edx], cx
cmp edi, dword [ebp - 0x224]
jae 0x10043b87
mov edx, dword [ebp - 0x210]
mov dword [ebp - 0x224], edi
mov word [ebp - 0x214], cx
mov dword [ebp - 0x244], edx
dec ecx
add ebx, 4
dec eax
test ecx, ecx
jg 0x10043b30
mov esi, dword [ebp - 0x210]
cmp dword [ebp - 0x244], esi
jne 0x10043ec7
mov eax, dword [ebp - 0x218]
mov cx, word [eax]
mov word [ebp - 0x212], cx
jmp 0x10043ec7
lea edx, [edi + 0x19]
cmp edx, 0x33
jae 0x10043e51
mov edx, edi
imul edx, ebx
sub edx, eax
cmp edi, 1
jle 0x10043c3f
add edx, esi
mov esi, edx
sub esi, ebx
lea eax, [edi - 1]
mov dword [ebp - 0x218], eax
mov ebx, 0x10070260
cmp edi, 0x18
jg 0x10043bf7
mov ecx, dword [edi*4 + 0x1007089c]
mov dword [ebp - 0x230], ecx
jmp 0x10043bfd
mov dword [ebp - 0x230], ebx
cmp eax, 0x18
jg 0x10043c11
mov ecx, dword [eax*4 + 0x1007089c]
mov dword [ebp - 0x238], ecx
jmp 0x10043c17
mov dword [ebp - 0x238], ebx
cmp edi, 6
jg 0x10043c2b
mov ecx, dword [edi*4 + 0x100708fc]
mov dword [ebp - 0x234], ecx
jmp 0x10043c31
mov dword [ebp - 0x234], ebx
cmp eax, 6
jg 0x10043cb5
mov ebx, dword [eax*4 + 0x100708fc]
jmp 0x10043cb5
sub edx, esi
lea esi, [edx + ebx]
mov dword [ebp - 0x218], ecx
mov ebx, 0x10070260
cmp edi, 0xffffffe8
jl 0x10043c67
mov eax, edi
not eax
mov eax, dword [eax*4 + 0x100708a0]
mov dword [ebp - 0x230], eax
jmp 0x10043c6d
mov dword [ebp - 0x230], ebx
cmp ecx, 0xffffffe8
jl 0x10043c85
mov eax, ecx
not eax
mov eax, dword [eax*4 + 0x100708a0]
mov dword [ebp - 0x238], eax
jmp 0x10043c8b
mov dword [ebp - 0x238], ebx
cmp edi, 0xfffffffa
jl 0x10043ca1
not edi
mov eax, dword [edi*4 + 0x10070900]
mov dword [ebp - 0x234], eax
jmp 0x10043ca7
mov dword [ebp - 0x234], ebx
cmp ecx, 0xfffffffa
jl 0x10043cb5
not ecx
mov ebx, dword [ecx*4 + 0x10070900]
cmp dword [ebp + 0x24], 0
je 0x10043d02
mov ecx, dword [ebp - 0x248]
mov eax, dword [ebp - 0x210]
movzx edi, word [ecx + eax*2]
mov ecx, dword [ebp - 0x22c]
mov eax, dword [ebp - 0x24c]
push ecx
call fcn.100437f0
mov edx, dword [ebp - 0x22c]
mov dword [ebp - 0x220], eax
mov eax, dword [ebp - 0x24c]
push edx
mov edx, esi
call fcn.100437f0
mov ecx, dword [ebp - 0x220]
add esp, 8
jmp 0x10043d1e
mov ecx, edx
imul ecx, edx
mov edx, dword [ebp - 0x22c]
mov eax, esi
imul ecx, edx
imul eax, esi
mov dword [ebp - 0x220], ecx
imul eax, edx
mov esi, dword [ebp - 0x210]
sub esi, dword [ebp - 0x23c]
sub eax, ecx
mov dword [ebp - 0x250], eax
test esi, esi
jle 0x10043ec7
mov ecx, dword [ebp - 0x210]
mov eax, dword [ebp - 0x238]
sub ecx, esi
lea edx, [ebp + ecx*4 - 0x104]
mov ecx, dword [ebp - 0x230]
dec eax
sub ecx, eax
dec ecx
mov dword [ebp - 0x230], ecx
mov ecx, dword [ebp - 0x234]
sub ecx, eax
sub ebx, eax
dec ecx
dec ebx
mov dword [ebp - 0x260], ebx
lea edi, [eax + esi]
mov dword [ebp - 0x238], edx
mov dword [ebp - 0x234], ecx
mov ebx, edx
mov eax, dword [ebp - 0x230]
movzx ecx, byte [eax + edi]
movzx eax, byte [edi]
mov edx, dword [ebx]
add edx, dword [ebp - 0x220]
shl eax, 0xb
add eax, edx
add eax, dword [ebp - 0x250]
shl ecx, 0xb
add ecx, edx
cmp eax, ecx
jae 0x10043db5
mov ecx, eax
mov eax, dword [ebp - 0x218]
jmp 0x10043dbb
mov eax, dword [ebp - 0x240]
cmp ecx, dword [ebp - 0x228]
jae 0x10043ddf
mov dword [ebp - 0x228], ecx
mov ecx, dword [ebp - 0x21c]
mov word [ebp + ecx - 0x20c], si
mov word [ebp + ecx - 0x20a], ax
mov ecx, dword [ebp - 0x234]
movzx eax, byte [ecx + edi]
mov ecx, dword [ebp - 0x260]
movzx ecx, byte [ecx + edi]
shl ecx, 0xb
add ecx, edx
add ecx, dword [ebp - 0x250]
shl eax, 0xb
add eax, edx
cmp ecx, eax
jae 0x10043e11
mov eax, ecx
mov ecx, dword [ebp - 0x218]
jmp 0x10043e17
mov ecx, dword [ebp - 0x240]
cmp eax, dword [ebp - 0x224]
jae 0x10043e3f
mov edx, dword [ebp - 0x210]
mov dword [ebp - 0x224], eax
mov word [ebp - 0x214], si
mov word [ebp - 0x212], cx
mov dword [ebp - 0x244], edx
dec esi
add ebx, 4
dec edi
test esi, esi
jg 0x10043d82
jmp 0x10043ec7
mov eax, dword [ebp - 0x210]
mov ecx, eax
sub ecx, dword [ebp - 0x23c]
test ecx, ecx
jle 0x10043ec7
mov esi, dword [ebp - 0x21c]
sub eax, ecx
lea edx, [ebp + eax*4 - 0x104]
mov eax, dword [edx]
add eax, 0xf000
cmp eax, dword [ebp - 0x228]
jae 0x10043e97
mov dword [ebp - 0x228], eax
mov word [ebp + esi - 0x20c], cx
mov word [ebp + esi - 0x20a], di
cmp eax, dword [ebp - 0x224]
jae 0x10043ebf
mov dword [ebp - 0x224], eax
mov eax, dword [ebp - 0x210]
mov word [ebp - 0x214], cx
mov word [ebp - 0x212], di
mov dword [ebp - 0x244], eax
dec ecx
add edx, 4
test ecx, ecx
jg 0x10043e72
mov eax, dword [ebp - 0x228]
mov ecx, dword [ebp - 0x21c]
mov edx, dword [ebp - 0x258]
mov dword [ebp + ecx - 0x104], eax
mov ecx, dword [ebp - 0x254]
lea esi, [edx + ecx]
cmp eax, esi
jae 0x10043f01
mov dword [ebp - 0x254], eax
mov eax, dword [ebp - 0x210]
mov dword [ebp - 0x23c], eax
jmp 0x10043f42
lea eax, [ecx + 0x800]
mov ecx, dword [ebp - 0x23c]
cmp dword [ebp + ecx*4 - 0x104], eax
jbe 0x10043f26
inc ecx
cmp dword [ebp + ecx*4 - 0x104], eax
ja 0x10043f16
mov dword [ebp - 0x23c], ecx
mov eax, dword [ebp - 0x210]
cmp ecx, eax
jge 0x10043f3c
add dword [ebp + ecx*4 - 0x104], edx
inc ecx
cmp ecx, eax
jl 0x10043f30
mov dword [ebp - 0x254], esi
add dword [ebp - 0x21c], 4
inc eax
mov dword [ebp - 0x210], eax
cmp eax, dword [ebp + 0x14]
jle 0x10043990
mov esi, dword [ebp - 0x244]
test esi, esi
jns 0x10043f77
mov eax, dword [ebp + 0x18]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10007f62
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp - 0x25c]
push 0x80
push 0
push edi
call fcn.1000e230
mov ebx, dword [ebp - 0x248]
movzx edx, word [ebx + esi*2]
mov ax, word [ebp - 0x212]
movsx ecx, word [ebp - 0x214]
mov word [edi + edx*2], ax
sub esi, ecx
cwde
mov ecx, esi
cdq
mov esi, eax
xor esi, edx
add esp, 0xc
sub esi, edx
test ecx, ecx
js 0x10043fe4
lea esp, [esp]
movzx eax, word [ebp + ecx*4 - 0x20a]
movzx edx, word [ebx + ecx*2]
mov word [edi + edx*2], ax
cwde
cdq
xor eax, edx
sub eax, edx
add esi, eax
movsx eax, word [ebp + ecx*4 - 0x20c]
sub ecx, eax
jns 0x10043fc0
mov ecx, dword [ebp - 4]
pop edi
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.10007f62
mov esp, ebp
pop ebp
ret