Function at 0x43db6c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x40
push esi
mov esi, ecx
mov dword [esp + 0xc], edx
xor eax, eax
mov dword [esp + 0x1c], esi
push edi
lea edi, [edx + 0xb7c]
mov dword [esp + 0x1c], eax
lea ecx, [esi + 0x1808]
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0xc], edi
cmp dword [ebp + 0xc], eax
jle 0x43dc2f
lea ecx, [edx + 0x1d7c]
mov dword [esp + 0x14], edi
mov edi, dword [ebp + 8]
mov dword [esp + 0x2c], ecx
lea ecx, [edx + 0x3f1c]
mov dword [esp + 0x18], ecx
movzx esi, word [edi + 4]
add esi, dword [edx + 4]
push eax
lea eax, [edx + 0x1d7c]
push eax
push edi
push edx
mov edx, ecx
mov ecx, dword [esp + 0x38]
call fcn.0043c884
mov edx, dword [esp + 0x20]
push esi
push dword [esp + 0x40]
mov esi, dword [esp + 0x2c]
mov ecx, esi
push edi
call fcn.0043ca7d
mov eax, dword [esp + 0x40]
add esp, 0x1c
mov ecx, dword [esp + 0x18]
inc eax
mov edx, dword [esp + 0x10]
add ecx, 0x27
add esi, 0x900
mov dword [esp + 0x24], eax
add edi, 0x1c
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], esi
cmp eax, dword [ebp + 0xc]
jl 0x43dbc3
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
jmp 0x43dc33
mov dword [esp + 0xc], edi
mov al, byte [esi + 0x180b]
test al, 0x10
je 0x43dc52
push ecx
push dword [ebp + 8]
add edx, 0x3f43
mov ecx, edi
call fcn.0043d1ac
pop ecx
pop ecx
jmp 0x43dc64
and al, 0xe0
cmp al, 0x60
jne 0x43dc64
mov edx, 0x240
mov ecx, edi
call fcn.0043cffd
cmp dword [ebp + 0xc], 0
jle 0x43de6f
mov edx, dword [ebp + 8]
lea ecx, [esi + 0x1809]
lea eax, [esi + 0x180a]
mov dword [esp + 0x44], ecx
add edx, 0xe
mov dword [esp + 0x34], eax
mov dword [esp + 0x24], edx
mov dword [esp + 0x38], 2
movzx ecx, byte [ecx]
mov eax, ecx
mov dword [esp + 0x30], 0x1f
shr eax, 4
and eax, 1
shr ecx, 3
and ecx, 1
add eax, ecx
imul ecx, eax, 3
mov eax, dword [esp + 0x34]
push 2
movzx eax, byte [eax]
shr eax, 2
and eax, 3
add ecx, eax
pop eax
sub ecx, eax
neg ecx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp byte [edx - 2], al
cmovne eax, dword [esp + 0x38]
shl eax, cl
cmp byte [edx], 0
mov dword [esp + 0x18], eax
je 0x43dd9c
lea ecx, [eax - 1]
mov edi, dword [esp + 0xc]
add eax, dword [esp + 0x1c]
mov dword [esp + 0x30], ecx
movzx ecx, byte [edx - 1]
add ecx, dword [edx - 0xe]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x10]
imul eax, eax, 0x48
lea edx, [ecx + 0x1e1c]
add ecx, 0xb7c
mov dword [esp + 0x40], edx
add eax, ecx
mov ecx, edx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x14]
movzx edx, byte [eax]
test edx, edx
je 0x43dd85
mov edi, dword [esp + 0x2c]
mov eax, edx
shl eax, 3
mov dword [esp + 0x28], eax
test edx, edx
je 0x43dd69
mov esi, dword [esp + 0x28]
mov eax, edx
shl eax, 2
mov dword [esp + 0x3c], eax
mov eax, dword [edi]
mov dword [ecx], eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + edi]
mov dword [ecx + 4], eax
mov eax, dword [esi + edi]
add edi, 4
mov dword [ecx + 8], eax
add ecx, 0xc
sub edx, 1
jne 0x43dd46
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
add edi, eax
add edx, 3
mov dword [esp + 0x14], edx
movzx edx, byte [edx]
test edx, edx
jne 0x43dd2c
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x40]
sub ecx, eax
and ecx, 0xfffffffc
push ecx
push eax
push dword [esp + 0x34]
call fcn.00449aa0
add esp, 0xc
mov edx, dword [esp + 0x30]
mov ecx, edi
call fcn.0043d347
mov ecx, dword [esp + 0x24]
mov edx, esi
mov al, byte [ecx - 3]
mov ecx, edi
mov byte [esp + 0xb], al
mov eax, dword [esp + 0x18]
test eax, eax
je 0x43ddd9
push eax
push 0x47f980
call fcn.0043d58e
imul edx, dword [esp + 0x20], 0x24
pop ecx
pop ecx
imul ecx, dword [esp + 0x18], 0x48
add ecx, edi
add edx, esi
push 0x20
pop eax
sub eax, dword [esp + 0x18]
cmp byte [esp + 0xb], 2
push eax
jne 0x43ddef
call fcn.0043d9e5
jmp 0x43de0f
xor eax, eax
mov dword [esp + 0x44], 0x48
cmp byte [esp + 0xf], 3
cmove eax, dword [esp + 0x44]
add eax, 0x47f980
push eax
call fcn.0043d58e
pop ecx
pop ecx
push 0x10
lea ecx, [edi + 0x48]
pop edx
xor eax, eax
inc eax
movss xmm0, dword [ecx + eax*4]
xorps xmm0, xmmword [0x4f2a30]
movss dword [ecx + eax*4], xmm0
add eax, 2
cmp eax, 0x12
jl 0x43de19
add ecx, 0x90
sub edx, 1
jne 0x43de16
mov edx, dword [esp + 0x24]
add edi, 0x900
add dword [esp + 0x1c], 0x20
add esi, 0x480
mov ecx, dword [esp + 0x44]
add edx, 0x1c
sub dword [ebp + 0xc], 1
mov dword [esp + 0xc], edi
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], edx
jne 0x43dc94
pop edi
pop esi
mov esp, ebp
pop ebp
ret