Function at 0x43dad0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
mov eax, dword [esp + 0x34]
mov dword [esp + 0xc], eax
mov dword [esp + 2], 0xa2a3a4a5
mov byte [esp + 6], 0
xor eax, eax
nop
nop
movzx edx, byte [esp + eax + 2]
mov esi, 0x60889915
sub esi, eax
lea edi, [eax + 0xa]
mov ebp, esi
and ebp, 0x1c
and edi, 0x1c
xor edi, 0x2008981c
mov ecx, eax
and ecx, 3
or ecx, ebp
or ecx, edi
and esi, 3
xor esi, 0x16600203
xor ecx, 2
or ecx, esi
xor ecx, edx
lea edx, [ecx + ecx]
and edx, 0x5e
xor edx, 0x58
xor ecx, 0x53
add ecx, edx
inc cl
mov byte [esp + eax + 2], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 5
jb 0x43daf0
mov esi, dword [esp + 2]
mov eax, dword [0x449dc8]
test eax, eax
je 0x43db9e
xor ecx, ecx
mov edx, dword [0x449dcc]
nop
cmp dword [edx + ecx*8], 0x29df508e
je 0x43db70
inc ecx
cmp eax, ecx
jne 0x43db60
jmp 0x43db9e
mov eax, dword [edx + ecx*8 + 4]
cmp eax, esi
je 0x43db9e
lea ecx, [esp + 0x14]
push ecx
push 0
push 0
push 0
push dword [esp + 0x40]
push dword [esp + 0x40]
push 0x18
push eax
push dword [0x449dd0]
call fcn.0043ad80
add esp, 0x24
mov esi, eax
mov dword [esp + 2], 0x10dfdebe
mov byte [esp + 6], 0
mov eax, 0x9a118175
mov ecx, 0x65ee7e8a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x65ee7e8d]
mov edi, ecx
and edi, 0x44025a0d
mov ebp, eax
and ebp, 0x98010062
or ebp, edi
xor edx, 0x4612db1d
mov edi, edx
and edi, ebp
add edx, ebp
add edi, edi
sub edx, edi
add dl, 0x58
mov byte [esp + eax + 0x65ee7e8d], dl
inc eax
dec ecx
cmp eax, 0x9a11817a
jne 0x43dbc0
cmp esi, dword [esp + 2]
jne 0x43de17
push dword [esp + 0x14]
call fcn.00439230
add esp, 4
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x10], ecx
mov dword [esp + 2], 0xa2a3a4a5
mov byte [esp + 6], 0
xor esi, esi
nop
nop
movzx edi, byte [esp + esi + 2]
mov ecx, 0x60889915
sub ecx, esi
lea ebp, [esi + 0xa]
mov ebx, ecx
and ebx, 0x1c
and ebp, 0x1c
xor ebp, 0x2008981c
mov edx, esi
and edx, 3
or edx, ebx
or edx, ebp
and ecx, 3
xor ecx, 0x16600203
xor edx, 2
or edx, ecx
xor edx, edi
lea ecx, [edx + edx]
and ecx, 0x5e
xor ecx, 0x58
xor edx, 0x53
add edx, ecx
inc dl
mov byte [esp + esi + 2], dl
mov ecx, esi
and ecx, 1
xor esi, 1
lea esi, [esi + ecx*2]
cmp esi, 5
jb 0x43dc30
mov esi, dword [esp + 2]
mov ecx, dword [0x449dc8]
test ecx, ecx
je 0x43dcc0
xor edx, edx
mov edi, dword [0x449dcc]
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0x34]
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0x29df508e
je 0x43dcca
inc edx
cmp ecx, edx
jne 0x43dcb0
jmp 0x43dd00
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0x34]
jmp 0x43dd00
mov edx, dword [edi + edx*8 + 4]
cmp edx, esi
je 0x43dd00
lea ecx, [esp + 0x14]
push ecx
push dword [esp + 0x14]
push dword [esp + 0x10]
push 0
push dword [esp + 0x40]
push dword [esp + 0x40]
push 0x18
push edx
push dword [0x449dd0]
mov edi, eax
call fcn.0043ad80
add esp, 0x24
mov esi, eax
mov eax, edi
test ebx, ebx
mov edx, dword [esp + 8]
je 0x43de0e
test esi, esi
js 0x43de0e
test ebp, ebp
je 0x43de07
mov ecx, dword [edx + 0xc]
shr ecx, 1
mov edi, dword [ebx]
cmp edi, ecx
jb 0x43dd29
mov edi, ecx
test edi, edi
je 0x43ddfe
add eax, 0x10
mov ecx, edi
and ecx, 3
je 0x43dd87
mov dword [esp + 0x10], edi
xor edi, edi
mov ebp, dword [esp + 0x34]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, word [eax]
xor edx, edx
test bx, bx
setne dl
lea eax, [eax + edx*2]
mov word [ebp], bx
add ebp, 2
inc edi
cmp ecx, edi
jne 0x43dd50
mov dword [esp + 0xc], ebp
mov ecx, dword [esp + 0x10]
mov ebp, ecx
sub ebp, edi
mov edi, ecx
mov ebx, dword [esp + 0x38]
mov edx, dword [esp + 8]
cmp edi, 4
jae 0x43dd8e
jmp 0x43ddfe
mov ebp, edi
cmp edi, 4
jb 0x43ddfe
mov ebx, dword [esp + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [eax]
xor ecx, ecx
test dx, dx
setne cl
lea edi, [eax + ecx*2]
mov word [ebx], dx
movzx eax, word [eax + ecx*2]
xor ecx, ecx
test ax, ax
setne cl
lea edx, [edi + ecx*2]
mov word [ebx + 2], ax
movzx eax, word [edi + ecx*2]
xor ecx, ecx
test ax, ax
setne cl
lea edi, [edx + ecx*2]
mov word [ebx + 4], ax
movzx ecx, word [edx + ecx*2]
xor eax, eax
test cx, cx
setne al
mov word [ebx + 6], cx
add ebx, 8
lea eax, [edi + eax*2]
add ebp, 0xfffffffc
jne 0x43dda0
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x38]
mov edx, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov word [eax], 0
mov eax, dword [edx + 0xc]
shr eax, 1
mov dword [ebx], eax
push edx
call fcn.00439250
add esp, 4
mov eax, esi
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret