Function at 0x43a5d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov eax, dword [ebp + 8]
mov dword [ebp - 0xc], ebx
mov dword [ebp - 8], edi
mov eax, dword [eax + 8]
cmp eax, 5
mov dword [ebp - 4], esi
mov ebx, dword [ebp + 0x14]
jl 0x43aa33
cmp eax, 0x11
jg 0x43a935
mov eax, dword [ebp + 0x10]
test byte [eax + 0x16d], 0x20
je 0x43a67f
mov eax, dword [ebp + 8]
cmp dword [ebp + 0xc], 1
mov ecx, dword [eax]
je 0x43aa42
mov eax, dword [ebp + 0xc]
mov edx, eax
shr edx, 0x1f
add edx, eax
sar edx, 1
mov dword [ebp - 0x14], edx
test edx, edx
jle 0x43a926
mov esi, dword [ebp + 0xc]
xor edx, edx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x24], ecx
lea eax, [esi + ebx]
mov dword [ebp - 0x18], eax
lea edi, [esi + ecx]
xor esi, esi
mov dword [ebp - 0x1c], edi
xor eax, eax
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x10], esi
mov ecx, dword [ebp - 0x20]
movzx esi, byte [edx + edi]
mov edi, dword [ebp - 0x1c]
movzx ebx, byte [eax + edi - 1]
xor esi, ebx
mov byte [edx + ecx], bl
inc edx
movzx ecx, byte [eax + edi - 1]
dec eax
mov ebx, dword [ebp - 0x18]
xor ecx, esi
mov esi, dword [ebp - 0x10]
mov byte [esi + ebx - 1], cl
dec esi
cmp edx, dword [ebp - 0x14]
jl 0x43a647
jmp 0x43a926
cmp dword [ebp + 0xc], 1
je 0x43aa4c
cmp dword [ebp + 0xc], 2
je 0x43a8a2
cmp dword [ebp + 0xc], 4
jne 0x43a728
mov eax, dword [ebp + 8]
mov esi, dword [eax]
mov edx, esi
and edx, 3
jne 0x43a6ad
mov eax, dword [esi]
jmp 0x43a6d1
and esi, 0xfffffffc
test edx, edx
je 0x43a6c4
lea ecx, [edx*8]
neg ecx
mov eax, dword [esi + 4]
shl eax, cl
jmp 0x43a6c6
xor eax, eax
shl edx, 3
mov ecx, edx
mov esi, dword [esi]
shr esi, cl
or eax, esi
mov edx, ebx
and edx, 3
jne 0x43a6df
mov dword [ebx], eax
jmp 0x43a926
mov esi, 0xffffffff
lea edi, [edx*8]
mov ecx, edi
and ebx, 0xfffffffc
shl esi, cl
test edx, edx
je 0x43a717
shl edx, 3
neg edx
mov ecx, dword [ebx + 4]
and ecx, esi
mov dword [ebp - 0x20], ecx
mov ecx, edx
mov edx, eax
shr edx, cl
mov dword [ebp - 0x24], esi
mov esi, dword [ebp - 0x20]
or esi, edx
mov dword [ebx + 4], esi
mov esi, dword [ebp - 0x24]
not esi
mov ecx, edi
and esi, dword [ebx]
shl eax, cl
or esi, eax
mov dword [ebx], esi
jmp 0x43a926
cmp dword [ebp + 0xc], 8
jne 0x43a88c
mov eax, dword [ebp + 8]
mov eax, dword [eax]
test al, 3
jne 0x43a748
mov edx, dword [eax]
mov dword [ebp - 0x10], edx
mov edx, dword [eax + 4]
jmp 0x43a7d4
mov edx, eax
and edx, 0xfffffff8
mov dword [ebp - 0x20], edx
and eax, 7
je 0x43a78c
mov esi, edx
lea ecx, [eax*8]
neg ecx
add ecx, 0x40
mov edx, dword [esi + 8]
cmp ecx, 0x1f
mov dword [ebp - 0x24], edx
mov edx, dword [esi + 0xc]
ja 0x43a77e
mov esi, dword [ebp - 0x24]
shld edx, esi, cl
shl esi, cl
mov dword [ebp - 0x10], esi
jmp 0x43a791
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x10], 0
shl edx, cl
jmp 0x43a791
xor edx, edx
mov dword [ebp - 0x10], edx
mov edi, dword [ebp - 0x20]
shl eax, 3
cmp eax, 0x1f
mov esi, dword [edi]
mov dword [ebp - 0x24], esi
mov esi, dword [edi + 4]
ja 0x43a7b8
mov ecx, eax
mov eax, esi
mov edi, dword [ebp - 0x24]
shrd edi, esi, cl
shr eax, cl
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x20], eax
jmp 0x43a7c8
mov ecx, eax
mov eax, esi
shr eax, cl
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x10]
or eax, dword [ebp - 0x24]
or edx, dword [ebp - 0x20]
mov dword [ebp - 0x10], eax
test bl, 3
jne 0x43a7e6
mov eax, dword [ebp - 0x10]
mov dword [ebx], eax
mov dword [ebx + 4], edx
jmp 0x43a926
mov eax, ebx
and ebx, 7
and eax, 0xfffffff8
mov dword [ebp - 0x14], eax
mov eax, 0xffffffff
lea ecx, [ebx*8]
mov dword [ebp - 0x18], ecx
shl eax, cl
test ebx, ebx
je 0x43a859
mov ecx, dword [ebp - 0x14]
shl ebx, 3
neg ebx
add ebx, 0x40
mov esi, dword [ecx + 0xc]
mov edi, dword [ecx + 8]
and edi, eax
mov dword [ebp - 0x1c], esi
cmp ebx, 0x1f
ja 0x43a835
mov ecx, ebx
mov ebx, edx
mov esi, dword [ebp - 0x10]
shrd esi, edx, cl
shr ebx, cl
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x24], ebx
jmp 0x43a845
mov ecx, ebx
mov ebx, edx
shr ebx, cl
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], ebx
mov esi, dword [ebp - 0x14]
mov ecx, edi
mov ebx, dword [ebp - 0x1c]
or ecx, dword [ebp - 0x20]
or ebx, dword [ebp - 0x24]
mov dword [esi + 8], ecx
mov dword [esi + 0xc], ebx
mov ecx, dword [ebp - 0x14]
not eax
and eax, dword [ecx]
cmp dword [ebp - 0x18], 0x1f
ja 0x43a873
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x10]
shld edx, ebx, cl
shl ebx, cl
jmp 0x43a87d
mov ecx, dword [ebp - 0x18]
xor ebx, ebx
mov edx, dword [ebp - 0x10]
shl edx, cl
mov ecx, dword [ebp - 0x14]
or eax, ebx
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x43a926
mov eax, dword [ebp + 8]
push dword [ebp + 0xc]
push dword [eax]
push ebx
call fcn.004b9600
add esp, 0xc
jmp 0x43a926
mov eax, dword [ebp + 8]
mov edx, dword [eax]
mov esi, edx
and esi, 0xfffffffe
and edx, 1
je 0x43a8c5
lea ecx, [edx*8]
neg ecx
add ecx, 0x10
movsx eax, word [esi + 2]
shl eax, cl
jmp 0x43a8c7
xor eax, eax
shl edx, 3
mov edi, 0xffffffff
mov ecx, edx
movzx esi, word [esi]
shr esi, cl
or eax, esi
mov esi, ebx
and ebx, 1
and esi, 0xfffffffe
lea edx, [ebx*8]
mov ecx, edx
shl edi, cl
test ebx, ebx
je 0x43a916
shl ebx, 3
neg ebx
add ebx, 0x10
movzx ecx, word [esi + 2]
and ecx, edi
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x20], ecx
mov ecx, ebx
movzx edi, ax
shr edi, cl
mov ebx, dword [ebp - 0x20]
or ebx, edi
mov edi, dword [ebp - 0x24]
mov word [esi + 2], bx
not edi
mov ecx, edx
movzx ebx, word [esi]
shl eax, cl
and ebx, edi
or ebx, eax
mov word [esi], bx
xor eax, eax
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret
cmp eax, 0x19
jl 0x43aa33
cmp eax, 0x1f
jle 0x43a964
cmp eax, 0x32
jl 0x43a952
cmp eax, 0x34
jle 0x43a964
jmp 0x43aa33
cmp eax, 0x28
jl 0x43aa33
cmp eax, 0x30
jg 0x43aa33
mov edx, dword [eax*4 + 0x4db19c]
cmp edx, 0xffffffff
mov eax, dword [ebp + 0x10]
movsx esi, byte [eax + 0x158]
je 0x43aa5b
mov edi, esi
lea ecx, [esi*4]
shl edi, 5
sub edi, ecx
mov eax, dword [ebp + 8]
mov edx, dword [edi + edx*4 + 0x4db360]
test edx, edx
mov eax, dword [eax]
je 0x43a9bc
push ebx
push 0
push eax
call edx
add esp, 0xc
cmp eax, 1
je 0x43a9de
mov eax, 0x5f
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret
cmp dword [ebp + 0xc], 4
mov edx, dword [eax]
mov dword [ebx], edx
je 0x43a9de
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
cmp dword [ebp + 0xc], 8
je 0x43a9de
mov edx, dword [eax + 8]
mov dword [ebx + 8], edx
mov eax, dword [eax + 0xc]
mov dword [ebx + 0xc], eax
mov eax, dword [ebp + 0x10]
test byte [eax + 0x16d], 0x20
je 0x43aa33
test esi, esi
je 0x43a9fe
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
cmp eax, 0x34
je 0x43a9fe
cmp eax, 0x32
jne 0x43aa33
mov edx, dword [ebp + 0xc]
mov eax, edx
shr eax, 0x1f
add eax, edx
sar eax, 1
test eax, eax
jle 0x43aa33
mov edx, dword [ebp + 0xc]
xor esi, esi
mov dword [ebp - 0x24], eax
xor ecx, ecx
lea edi, [edx + ebx]
movzx eax, byte [ebx]
inc esi
movzx edx, byte [ecx + edi - 1]
xor eax, edx
mov byte [ebx], dl
inc ebx
xor byte [ecx + edi - 1], al
dec ecx
cmp esi, dword [ebp - 0x24]
jl 0x43aa1b
xor eax, eax
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret
movzx eax, byte [ecx]
mov byte [ebx], al
jmp 0x43a926
mov esi, dword [ebp + 8]
mov edi, dword [esi]
movzx eax, byte [edi]
mov byte [ebx], al
jmp 0x43a926
mov eax, 0x5f
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov esp, ebp
pop ebp
ret