Function at 0x43b7c0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x1c
push ebx
mov ebx, dword [esp + 0x34]
push ebp
push esi
mov ebp, ecx
push edi
mov dword [esp + 0x10], ebp
cmp ebx, dword [0x4801f0]
je 0x43b84e
push 0x47f9f0
call fcn.00418730
xor esi, esi
jmp 0x43b7f0
mov eax, esi
and eax, 0xff
mov ecx, dword [eax*8 + 0x47f9f0]
mov edx, dword [eax*8 + 0x47f9f4]
test ebx, ebx
jbe 0x43b831
mov edi, ebx
jmp 0x43b810
mov eax, ecx
shrd ecx, edx, 8
and eax, 0xff
xor ecx, dword [eax*8 + 0x47f9f0]
shr edx, 8
xor edx, dword [eax*8 + 0x47f9f4]
sub edi, 1
jne 0x43b810
mov dword [esi*8 + 0x47f1f0], ecx
mov dword [esi*8 + 0x47f1f4], edx
inc esi
cmp esi, 0x100
jb 0x43b7f0
mov dword [0x4801f0], ebx
or eax, 0xffffffff
cmp dword [ebp + 0x10044], 0
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
jne 0x43b875
push 0x400001
call fcn.004538cf
add esp, 4
mov dword [ebp + 0x10044], eax
mov esi, dword [esp + 0x34]
mov edi, dword [ebp + 0x10044]
mov dword [esp + 0x40], edi
cmp esi, dword [esp + 0x3c]
ja 0x43ba0b
mov ebp, dword [esp + 0x30]
jb 0x43b8a4
cmp ebp, dword [esp + 0x38]
jae 0x43ba0b
jmp 0x43b8a4
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x1c]
and eax, dword [esp + 0x20]
cmp eax, 0xffffffff
jne 0x43ba0b
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 8]
push 0
push esi
push ebp
call eax
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
mov ecx, edx
sub ecx, ebp
sbb eax, esi
test eax, eax
jb 0x43b8ea
ja 0x43b8e3
cmp ecx, 0x400000
jbe 0x43b8ea
mov eax, 0x400000
jmp 0x43b8ee
mov eax, edx
sub eax, ebp
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + 0x10]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
push edi
call eax
cmp eax, ebx
mov dword [esp + 0x14], eax
jl 0x43ba0b
push ebx
push edi
push 0
push 0
call fcn.00418980
mov ecx, dword [esp + 0x14]
xor esi, esi
sub ecx, ebx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x44]
mov ecx, dword [ecx + 0x50]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x44]
mov ecx, dword [ecx + 0x54]
mov dword [esp + 0x28], ecx
cmp eax, dword [esp + 0x24]
jne 0x43b943
cmp edx, dword [esp + 0x28]
je 0x43b992
lea ecx, [esi + edi]
movzx ecx, byte [ecx + ebx]
movzx edi, byte [esi + edi]
xor ecx, eax
and ecx, 0xff
mov ebp, dword [ecx*8 + 0x47f9f0]
xor ebp, dword [edi*8 + 0x47f1f0]
mov ecx, dword [ecx*8 + 0x47f9f4]
xor ecx, dword [edi*8 + 0x47f1f4]
mov edi, dword [esp + 0x40]
shrd eax, edx, 8
shr edx, 8
xor ebp, eax
xor ecx, edx
inc esi
mov eax, ebp
mov ebp, dword [esp + 0x30]
mov edx, ecx
cmp esi, dword [esp + 0x18]
jbe 0x43b937
jmp 0x43b9dc
mov eax, dword [esp + 0x44]
mov ecx, dword [eax + 0x2c]
push ebx
lea edx, [esi + edi]
push edx
push ecx
call fcn.00454980
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 0x10078]
add esp, 0xc
cmp ebx, eax
jae 0x43b9cc
sub eax, ebx
push eax
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x2c]
add ecx, ebx
push 0
push ecx
call fcn.00453e70
add esp, 0xc
xor eax, eax
add esi, ebp
adc eax, dword [esp + 0x34]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], eax
cmp dword [esp + 0x14], ebx
je 0x43ba0b
add ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x34]
adc eax, 0
mov dword [esp + 0x30], ebp
mov dword [esp + 0x34], eax
cmp eax, dword [esp + 0x3c]
jb 0x43b8a0
ja 0x43ba0b
cmp ebp, dword [esp + 0x38]
jb 0x43b8a0
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret 0x18