Function at 0x430220
Capabilities:
Encode data using xor

Disassembly:
push ecx
push esi
mov esi, dword [esp + 0xc]
test esi, esi
mov dword [esp + 4], 0
jne 0x43023c
mov eax, 0xffffff9a
pop esi
pop ecx
ret 0xc
push ebx
mov ebx, dword [esi + 0x9c]
test ebx, ebx
jne 0x430252
pop ebx
mov eax, 0xffffff9a
pop esi
pop ecx
ret 0xc
cmp dword [ebx], 0
jne 0x430262
pop ebx
mov eax, 0xffffff9c
pop esi
pop ecx
ret 0xc
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x430270
pop ebx
pop esi
pop ecx
ret 0xc
mov ecx, dword [esp + 0x14]
mov dword [ebx + 0x10], ecx
mov ecx, dword [ebx + 0x5c]
cmp eax, ecx
mov dword [ebx + 0x14], eax
jbe 0x43028e
mov edx, dword [ebx + 0x8c]
test edx, edx
jne 0x43028e
mov dword [ebx + 0x14], ecx
mov edx, dword [ebx + 0x58]
mov ecx, dword [ebx + 8]
add ecx, edx
cmp eax, ecx
jbe 0x4302a7
mov eax, dword [ebx + 0x8c]
test eax, eax
je 0x4302a7
mov dword [ebx + 0x14], ecx
mov eax, dword [ebx + 0x14]
test eax, eax
push ebp
push edi
jbe 0x4304a7
mov eax, dword [ebx + 8]
test eax, eax
jne 0x4303a5
mov eax, dword [ebx + 0x58]
test eax, eax
jbe 0x4303a5
mov edi, 0x4000
cmp eax, edi
mov dword [esp + 0x20], edi
jae 0x4302dd
mov dword [esp + 0x20], eax
mov edi, eax
mov eax, dword [ebx + 0x3c]
mov edx, dword [ebx + 0x88]
mov ecx, dword [ebx + 0x7c]
push 0
add edx, eax
mov eax, dword [ebx + 0x80]
push edx
push eax
push ecx
call dword [ebx + 0x70]
add esp, 0x10
test eax, eax
jne 0x4304b3
mov edx, dword [ebx]
mov eax, dword [ebx + 0x80]
mov ecx, dword [ebx + 0x7c]
push edi
push edx
push eax
push ecx
call dword [ebx + 0x64]
add esp, 0x10
cmp eax, edi
jne 0x4304b3
mov eax, dword [esi + 0xa0]
test eax, eax
je 0x43038d
xor ebp, ebp
test edi, edi
jbe 0x43038d
add esi, 0xa4
jmp 0x430340
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0xac]
mov edx, dword [ebx]
and eax, 0xfffd
or eax, 2
lea edi, [edx + ebp]
mov edx, eax
xor edx, 1
imul edx, eax
mov al, byte [edi]
shr edx, 8
xor al, dl
mov byte [edi], al
mov eax, dword [ebx]
movsx eax, byte [eax + ebp]
mov edi, dword [ecx + 0xb0]
call fcn.0042f7a0
mov ecx, dword [ebx]
mov byte [ecx + ebp], al
mov eax, dword [esp + 0x20]
inc ebp
cmp ebp, eax
jb 0x430340
mov esi, dword [esp + 0x18]
mov edi, eax
mov ecx, dword [ebx + 0x3c]
mov eax, dword [ebx + 0x58]
mov edx, dword [ebx]
add ecx, edi
sub eax, edi
mov dword [ebx + 0x3c], ecx
mov dword [ebx + 0x58], eax
mov dword [ebx + 4], edx
mov dword [ebx + 8], edi
mov eax, dword [ebx + 0x84]
test eax, eax
je 0x430420
mov eax, dword [ebx + 0x8c]
test eax, eax
jne 0x430420
mov eax, dword [ebx + 0x10]
mov esi, dword [ebx + 0x18]
push 2
lea ecx, [ebx + 4]
push ecx
mov dword [esp + 0x28], eax
call fcn.00430fe0
mov ebp, eax
test ebp, ebp
jl 0x4303e0
mov eax, dword [ebx + 0x1c]
test eax, eax
je 0x4303e0
mov ebp, 0xfffffffd
mov edi, dword [ebx + 0x18]
mov edx, dword [esp + 0x20]
mov eax, dword [ebx + 0x50]
sub edi, esi
push edi
push edx
push eax
call fcn.00430d60
mov edx, dword [ebx + 0x5c]
mov ecx, dword [esp + 0x10]
sub edx, edi
add ecx, edi
cmp ebp, 1
mov dword [ebx + 0x50], eax
mov dword [ebx + 0x5c], edx
mov dword [esp + 0x10], ecx
je 0x4304a7
test ebp, ebp
jne 0x4304be
mov esi, dword [esp + 0x18]
jmp 0x43049c
mov eax, dword [ebx + 8]
test eax, eax
jne 0x43042e
mov ecx, dword [ebx + 0x58]
test ecx, ecx
je 0x4304a7
mov edi, dword [ebx + 0x14]
cmp edi, eax
jb 0x430437
mov edi, eax
xor eax, eax
test edi, edi
jbe 0x430451
lea ecx, [ecx]
mov ecx, dword [ebx + 4]
mov cl, byte [eax + ecx]
mov edx, dword [ebx + 0x10]
mov byte [eax + edx], cl
inc eax
cmp eax, edi
jb 0x430440
mov edx, dword [ebx + 0x10]
mov eax, dword [ebx + 0x50]
push edi
push edx
push eax
call fcn.00430d60
mov edx, dword [ebx + 0x5c]
mov ecx, dword [ebx + 8]
mov ebp, dword [ebx + 0x10]
mov dword [ebx + 0x50], eax
mov eax, dword [ebx + 0x14]
sub edx, edi
sub ecx, edi
sub eax, edi
mov dword [ebx + 0x5c], edx
mov edx, dword [ebx + 4]
mov dword [ebx + 8], ecx
mov ecx, dword [ebx + 0x18]
mov dword [ebx + 0x14], eax
mov eax, dword [esp + 0x10]
add ebp, edi
add edx, edi
add ecx, edi
add eax, edi
mov dword [ebx + 0x10], ebp
mov dword [ebx + 4], edx
mov dword [ebx + 0x18], ecx
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0x14]
test eax, eax
ja 0x4302b4
mov eax, dword [esp + 0x10]
pop edi
pop ebp
pop ebx
pop esi
pop ecx
ret 0xc
pop edi
pop ebp
pop ebx
or eax, 0xffffffff
pop esi
pop ecx
ret 0xc
pop edi
mov eax, ebp
pop ebp
pop ebx
pop esi
pop ecx
ret 0xc