Function at 0x10066750
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x210
push ebx
mov ebx, dword [esp + 0x218]
push ebp
push esi
xor esi, esi
push edi
test ebx, ebx
jne 0x10066776
pop edi
pop esi
pop ebp
mov ax, 0xc9
pop ebx
add esp, 0x210
ret
mov edi, dword [esp + 0x228]
test edi, edi
jne 0x10066790
pop edi
pop esi
pop ebp
mov ax, 0xc9
pop ebx
add esp, 0x210
ret
mov ebp, dword [esp + 0x22c]
test ebp, ebp
jne 0x100667aa
pop edi
pop esi
pop ebp
mov ax, 0xc9
pop ebx
add esp, 0x210
ret
mov eax, dword [esp + 0x234]
and eax, 0xff
sub eax, 0
je 0x100668b5
dec eax
jne 0x10066acf
mov ebp, dword [esp + 0x230]
mov eax, dword [ebx]
test eax, eax
lea esi, [ebp - 4]
jne 0x100667e0
mov esi, 0xcc
jmp 0x10066acf
lea ecx, [esp + 0xc4]
push ecx
push edi
push eax
call fcn.10066260
add esp, 0xc
test ax, ax
je 0x100667fe
mov esi, eax
jmp 0x10066acf
lea edx, [esp + 0xc4]
test edx, edx
je 0x10066822
mov eax, dword [esp + 0x22c]
push esi
lea ecx, [esp + 0xc8]
push eax
push ecx
call fcn.100610e0
add esp, 0xc
lea edx, [esp + 0xc4]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.10061250
add esp, 8
xor esi, esi
xor eax, eax
xor ecx, ecx
xor edx, edx
xor ebx, ebx
mov dl, byte [esp + eax + 0x18]
mov bl, byte [esp + edx + 0x120]
and ebx, 0x80000003
jns 0x10066859
dec ebx
or ebx, 0xfffffffc
inc ebx
shl ebx, cl
add ecx, 2
or esi, ebx
inc eax
cmp ecx, 0x20
jl 0x1006683d
mov dword [esp + 0x10], esi
xor eax, eax
mov cl, byte [esp + eax + 0x28]
mov bl, byte [esp + eax + 0x10]
xor bl, cl
mov byte [esp + eax + 0x10], bl
inc eax
cmp eax, 4
jb 0x1006686c
push 0
lea edx, [esp + 0xc8]
push 0x15c
push edx
call fcn.10076d00
mov eax, dword [esp + 0x238]
mov esi, dword [esp + 0x1c]
add esp, 0xc
sub esi, dword [eax + ebp - 4]
neg esi
sbb esi, esi
and esi, 0xcb
jmp 0x10066acf
xor eax, eax
mov al, byte [edi + 6]
shr eax, 6
sub eax, 0
je 0x10066bbf
dec eax
jne 0x10066acf
mov al, byte [ebp + 5]
mov ecx, dword [ebp]
and eax, 7
sub eax, 0
je 0x10066afa
dec eax
je 0x10066a08
dec eax
jne 0x10066acf
mov eax, dword [ebx + 8]
test eax, eax
jne 0x100668fe
mov esi, 0xcc
jmp 0x10066acf
mov ecx, dword [esp + 0x230]
xor eax, eax
lea ebp, [ecx + ebp - 0x28]
mov edx, 0x13
mov ecx, 4
sub edx, eax
shr edx, 2
sub ecx, edx
xor edx, edx
mov dl, byte [eax + ebp]
mov esi, dword [esp + ecx*4 + 0x2c]
lea ecx, [esp + ecx*4 + 0x2c]
shl esi, 8
or edx, esi
inc eax
cmp eax, 0x14
mov dword [ecx], edx
jb 0x1006690b
mov ecx, 5
lea esi, [esp + 0x2c]
lea edi, [esp + 0x9c]
add ebp, eax
rep movsd dword es:[edi], dword [esi]
xor eax, eax
mov edx, 0x13
mov ecx, 4
sub edx, eax
shr edx, 2
sub ecx, edx
xor edx, edx
mov dl, byte [eax + ebp]
mov esi, dword [esp + ecx*4 + 0x2c]
lea ecx, [esp + ecx*4 + 0x2c]
shl esi, 8
or edx, esi
inc eax
cmp eax, 0x14
mov dword [ecx], edx
jb 0x1006694c
mov ecx, 5
lea esi, [esp + 0x2c]
lea edi, [esp + 0xb0]
lea eax, [esp + 0x40]
rep movsd dword es:[edi], dword [esi]
push eax
call fcn.10061090
mov ecx, dword [esp + 0x22c]
push 4
add ecx, 2
lea edx, [esp + 0x48]
push ecx
push edx
call fcn.100610e0
mov eax, dword [esp + 0x240]
mov ecx, dword [esp + 0x23c]
add eax, 0xffffffd8
lea edx, [esp + 0x50]
push eax
push ecx
push edx
call fcn.100610e0
lea eax, [esp + 0x5c]
lea ecx, [esp + 0x48]
push eax
push ecx
call fcn.10061250
mov eax, dword [ebx + 8]
lea edx, [esp + 0xc0]
push edx
push eax
push 0x10090050
lea ecx, [esp + 0x5c]
push 0x14
push ecx
call fcn.1007a480
mov esi, eax
add esp, 0x38
dec esi
neg esi
sbb esi, esi
and esi, 0xcb
jmp 0x10066acf
mov eax, dword [ebx + 4]
test eax, eax
jne 0x10066a19
mov esi, 0xcc
jmp 0x10066acf
mov esi, dword [esp + 0x230]
cmp esi, 0x4c
jae 0x10066a2f
mov esi, 0xc9
jmp 0x10066acf
push 0x40
mov dword [esp + 0x18], 0x40
call fcn.1002a8ca
mov edx, dword [ebx + 4]
mov ebx, dword [esp + 0x230]
mov edi, eax
push edx
lea eax, [ebx + esi - 0x40]
push 0x40
lea ecx, [esp + 0x20]
push eax
push ecx
push edi
call fcn.10065100
lea edx, [esp + 0x58]
push edx
call fcn.10061090
mov eax, dword [esp + 0x244]
push 4
add eax, 2
lea ecx, [esp + 0x60]
push eax
push ecx
call fcn.100610e0
add esi, 0xffffffc0
lea edx, [esp + 0x68]
push esi
push ebx
push edx
call fcn.100610e0
lea eax, [esp + 0x74]
lea ecx, [esp + 0x60]
push eax
push ecx
call fcn.10061250
push 0x14
lea edx, [esp + 0x6c]
push edi
push edx
call fcn.10076d40
add esp, 0x48
test eax, eax
push 0x40
push 0x4f
push edi
je 0x10066aee
call fcn.10076d00
add esp, 0xc
mov esi, 0xcb
test edi, edi
je 0x10066acf
push edi
call fcn.1005b2f8
add esp, 4
push 0x14
lea eax, [esp + 0x30]
push 0
push eax
call fcn.10076d00
add esp, 0xc
mov ax, si
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x210
ret
call fcn.10076d00
add esp, 0xc
xor esi, esi
jmp 0x10066ac2
mov eax, dword [ebx]
lea esi, [ecx - 4]
test eax, eax
jne 0x10066b0a
mov esi, 0xcc
jmp 0x10066acf
lea ecx, [esp + 0xc4]
push ecx
push edi
push eax
call fcn.10066260
add esp, 0xc
test ax, ax
je 0x10066b25
mov esi, eax
jmp 0x10066acf
lea edx, [esp + 0xc4]
test edx, edx
je 0x10066b49
mov eax, dword [esp + 0x22c]
push esi
lea ecx, [esp + 0xc8]
push eax
push ecx
call fcn.100610e0
add esp, 0xc
lea edx, [esp + 0xc4]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.10061250
add esp, 8
xor esi, esi
xor eax, eax
xor ecx, ecx
xor edx, edx
mov dl, byte [esp + eax + 0x18]
mov dl, byte [esp + edx + 0x120]
shr edx, 3
and edx, 3
shl edx, cl
add ecx, 2
or esi, edx
inc eax
cmp ecx, 0x20
jb 0x10066b64
mov dword [esp + 0x10], esi
xor eax, eax
lea ecx, [esp + 0x13]
mov dl, byte [esp + eax + 0x28]
mov bl, byte [ecx]
xor bl, dl
inc eax
mov byte [ecx], bl
dec ecx
cmp eax, 4
jb 0x10066b8e
push 0
lea eax, [esp + 0xc8]
push 0x15c
push eax
call fcn.10076d00
mov esi, dword [esp + 0x1c]
add esp, 0xc
jmp 0x10066c83
mov eax, dword [ebx]
test eax, eax
jne 0x10066bcf
mov esi, 0xcc
jmp 0x10066acf
lea ecx, [esp + 0xc4]
push ecx
push edi
push eax
call fcn.10066260
add esp, 0xc
test ax, ax
je 0x10066bed
mov esi, eax
jmp 0x10066acf
lea edx, [esp + 0xc4]
test edx, edx
je 0x10066c12
mov eax, dword [esp + 0x22c]
push 0x12
lea ecx, [esp + 0xc8]
push eax
push ecx
call fcn.100610e0
add esp, 0xc
lea edx, [esp + 0xc4]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.10061250
add esp, 8
xor esi, esi
xor eax, eax
xor ecx, ecx
xor edx, edx
mov dl, byte [esp + eax + 0x18]
mov dl, byte [esp + edx + 0x120]
shr edx, 3
and edx, 3
shl edx, cl
add ecx, 2
or esi, edx
inc eax
cmp ecx, 0x20
jb 0x10066c2d
mov dword [esp + 0x10], esi
xor eax, eax
lea ecx, [esp + 0x13]
mov dl, byte [esp + eax + 0x28]
mov bl, byte [ecx]
xor bl, dl
inc eax
mov byte [ecx], bl
dec ecx
cmp eax, 4
jb 0x10066c57
push 0
lea eax, [esp + 0xc8]
push 0x15c
push eax
call fcn.10076d00
mov esi, dword [esp + 0x1c]
add esp, 0xc
mov ecx, dword [esp + 0x230]
mov edx, dword [esp + 0x22c]
sub esi, dword [edx + ecx - 4]
neg esi
sbb esi, esi
and esi, 0xcb
jmp 0x10066acf