Function at 0x10056440
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 0x10056466
pop edi
pop esi
pop ebp
mov ax, 0xc9
pop ebx
add esp, 0x210
ret
mov edi, dword [esp + 0x228]
test edi, edi
jne 0x10056480
pop edi
pop esi
pop ebp
mov ax, 0xc9
pop ebx
add esp, 0x210
ret
mov ebp, dword [esp + 0x22c]
test ebp, ebp
jne 0x1005649a
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 0x100565a5
dec eax
jne 0x100567bf
mov ebp, dword [esp + 0x230]
mov eax, dword [ebx]
test eax, eax
lea esi, [ebp - 4]
jne 0x100564d0
mov esi, 0xcc
jmp 0x100567bf
lea ecx, [esp + 0xc4]
push ecx
push edi
push eax
call fcn.10055f50
add esp, 0xc
test ax, ax
je 0x100564ee
mov esi, eax
jmp 0x100567bf
lea edx, [esp + 0xc4]
test edx, edx
je 0x10056512
mov eax, dword [esp + 0x22c]
push esi
lea ecx, [esp + 0xc8]
push eax
push ecx
call fcn.10050dd0
add esp, 0xc
lea edx, [esp + 0xc4]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.10050f40
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 0x10056549
dec ebx
or ebx, 0xfffffffc
inc ebx
shl ebx, cl
add ecx, 2
or esi, ebx
inc eax
cmp ecx, 0x20
jl 0x1005652d
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 0x1005655c
push 0
lea edx, [esp + 0xc8]
push 0x15c
push edx
call fcn.100669f0
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 0x100567bf
xor eax, eax
mov al, byte [edi + 6]
shr eax, 6
sub eax, 0
je 0x100568af
dec eax
jne 0x100567bf
mov al, byte [ebp + 5]
mov ecx, dword [ebp]
and eax, 7
sub eax, 0
je 0x100567ea
dec eax
je 0x100566f8
dec eax
jne 0x100567bf
mov eax, dword [ebx + 8]
test eax, eax
jne 0x100565ee
mov esi, 0xcc
jmp 0x100567bf
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 0x100565fb
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 0x1005663c
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.10050d80
mov ecx, dword [esp + 0x22c]
push 4
add ecx, 2
lea edx, [esp + 0x48]
push ecx
push edx
call fcn.10050dd0
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.10050dd0
lea eax, [esp + 0x5c]
lea ecx, [esp + 0x48]
push eax
push ecx
call fcn.10050f40
mov eax, dword [ebx + 8]
lea edx, [esp + 0xc0]
push edx
push eax
push 0x10081fc0
lea ecx, [esp + 0x5c]
push 0x14
push ecx
call fcn.1006a170
mov esi, eax
add esp, 0x38
dec esi
neg esi
sbb esi, esi
and esi, 0xcb
jmp 0x100567bf
mov eax, dword [ebx + 4]
test eax, eax
jne 0x10056709
mov esi, 0xcc
jmp 0x100567bf
mov esi, dword [esp + 0x230]
cmp esi, 0x4c
jae 0x1005671f
mov esi, 0xc9
jmp 0x100567bf
push 0x40
mov dword [esp + 0x18], 0x40
call fcn.1001a5ba
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.10054df0
lea edx, [esp + 0x58]
push edx
call fcn.10050d80
mov eax, dword [esp + 0x244]
push 4
add eax, 2
lea ecx, [esp + 0x60]
push eax
push ecx
call fcn.10050dd0
add esi, 0xffffffc0
lea edx, [esp + 0x68]
push esi
push ebx
push edx
call fcn.10050dd0
lea eax, [esp + 0x74]
lea ecx, [esp + 0x60]
push eax
push ecx
call fcn.10050f40
push 0x14
lea edx, [esp + 0x6c]
push edi
push edx
call fcn.10066a30
add esp, 0x48
test eax, eax
push 0x40
push 0x4f
push edi
je 0x100567de
call fcn.100669f0
add esp, 0xc
mov esi, 0xcb
test edi, edi
je 0x100567bf
push edi
call fcn.1004afe8
add esp, 4
push 0x14
lea eax, [esp + 0x30]
push 0
push eax
call fcn.100669f0
add esp, 0xc
mov ax, si
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x210
ret
call fcn.100669f0
add esp, 0xc
xor esi, esi
jmp 0x100567b2
mov eax, dword [ebx]
lea esi, [ecx - 4]
test eax, eax
jne 0x100567fa
mov esi, 0xcc
jmp 0x100567bf
lea ecx, [esp + 0xc4]
push ecx
push edi
push eax
call fcn.10055f50
add esp, 0xc
test ax, ax
je 0x10056815
mov esi, eax
jmp 0x100567bf
lea edx, [esp + 0xc4]
test edx, edx
je 0x10056839
mov eax, dword [esp + 0x22c]
push esi
lea ecx, [esp + 0xc8]
push eax
push ecx
call fcn.10050dd0
add esp, 0xc
lea edx, [esp + 0xc4]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.10050f40
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 0x10056854
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 0x1005687e
push 0
lea eax, [esp + 0xc8]
push 0x15c
push eax
call fcn.100669f0
mov esi, dword [esp + 0x1c]
add esp, 0xc
jmp 0x10056973
mov eax, dword [ebx]
test eax, eax
jne 0x100568bf
mov esi, 0xcc
jmp 0x100567bf
lea ecx, [esp + 0xc4]
push ecx
push edi
push eax
call fcn.10055f50
add esp, 0xc
test ax, ax
je 0x100568dd
mov esi, eax
jmp 0x100567bf
lea edx, [esp + 0xc4]
test edx, edx
je 0x10056902
mov eax, dword [esp + 0x22c]
push 0x12
lea ecx, [esp + 0xc8]
push eax
push ecx
call fcn.10050dd0
add esp, 0xc
lea edx, [esp + 0xc4]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.10050f40
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 0x1005691d
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 0x10056947
push 0
lea eax, [esp + 0xc8]
push 0x15c
push eax
call fcn.100669f0
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 0x100567bf