Function at 0x43f870
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov eax, dword [esp + 0x38]
test eax, eax
je 0x43f8ba
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x43f890
sar ecx, 1
mov edx, ecx
and edx, 0xfffd
mov esi, ecx
and esi, 2
or ecx, 2
imul ecx, esi
xor esi, 2
imul esi, edx
add ecx, esi
jmp 0x43f8bc
xor ecx, ecx
mov word [esp + 0x18], cx
mov edx, eax
test eax, eax
je 0x43f8cc
add ecx, 2
mov edx, ecx
mov word [esp + 0x1a], dx
mov dword [esp + 0x1c], eax
mov dword [esp + 4], 0x5040302
xor eax, eax
nop
movzx edx, byte [esp + eax + 4]
lea ecx, [eax - 0x4424576e]
lea esi, [eax + 0x92]
and esi, edx
or ecx, edx
xor ecx, esi
mov edx, ecx
xor edx, 0x91
and ecx, 0x6e
add ecx, ecx
sub ecx, edx
inc cl
mov byte [esp + eax + 4], cl
add eax, 0xd8791dbd
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
add eax, 0x2786e243
cmp eax, 4
jb 0x43f8e0
mov ebp, dword [esp + 4]
mov dword [esp + 0x14], 0xedecebe8
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
neg edx
mov eax, edx
and eax, 0x46
add eax, eax
xor edx, 0x39
sub edx, eax
inc dl
xor dl, byte [esp + ecx + 0x14]
add dl, 0x30
mov byte [esp + ecx + 0x14], dl
mov eax, ecx
xor eax, 1
and ecx, 1
lea ecx, [eax + ecx*2]
cmp ecx, 4
jb 0x43f940
mov esi, dword [esp + 0x14]
mov dword [esp], 0x76777879
mov edx, 0xf95868d6
mov ebx, 0x29
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edx + 0x6a7972a]
mov eax, ecx
xor eax, edx
or eax, ebx
add al, al
add al, cl
movzx eax, al
add eax, edx
add al, 0x52
mov byte [esp + edx + 0x6a7972a], al
inc edx
dec ebx
cmp edx, 0xf95868da
jne 0x43f990
mov edi, dword [esp]
mov edx, dword [0x44a4e0]
test edx, edx
je 0x43fa1f
mov ebx, ebp
mov eax, edi
xor ebp, ebp
mov edi, dword [0x44a4e4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + ebp*8], 0x299a4ecd
je 0x43f9f0
inc ebp
cmp edx, ebp
jne 0x43f9e0
jmp 0x43fa1d
mov edx, dword [edi + ebp*8 + 4]
mov edi, eax
cmp edx, eax
je 0x43fa1f
lea eax, [esp + 0x10]
lea ecx, [esp + 0x18]
push eax
push ebx
push 0
push esi
push ecx
push dword [esp + 0x48]
push 0x18
push edx
push dword [0x44a4e8]
call fcn.0043c7c0
add esp, 0x24
mov edi, eax
mov dword [esp], 0x89484725
mov eax, 0x7f9305f6
mov ecx, 9
movzx ebx, byte [esp + eax - 0x7f9305f6]
mov edx, ebx
xor edx, eax
or edx, ecx
add dl, dl
add dl, bl
movzx edx, dl
add edx, eax
add dl, 0x52
mov byte [esp + eax - 0x7f9305f6], dl
inc eax
dec ecx
cmp eax, 0x7f9305fa
jne 0x43fa30
cmp edi, dword [esp]
jne 0x43fbda
push dword [esp + 0x10]
call fcn.0043af40
add esp, 4
mov esi, dword [esp + 0x10]
mov dword [esp + 4], 0x43424142
xor edx, edx
nop
nop
nop
mov ecx, edx
add cl, 0x40
xor byte [esp + edx + 4], cl
inc edx
cmp edx, 4
jne 0x43fa80
mov ecx, dword [esp + 4]
mov dword [esp + 0xc], ecx
mov dword [esp], 0x76777879
mov ebx, 0xf95868d6
mov ebp, 0x29
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ebx + 0x6a7972a]
mov ecx, edx
xor ecx, ebx
or ecx, ebp
add cl, cl
add cl, dl
movzx ecx, cl
add ecx, ebx
add cl, 0x52
mov byte [esp + ebx + 0x6a7972a], cl
inc ebx
dec ebp
cmp ebx, 0xf95868da
jne 0x43fab0
mov edi, dword [esp]
mov ebp, dword [0x44a4e0]
test ebp, ebp
je 0x43fb12
mov dword [esp + 8], esi
mov ecx, edi
xor edi, edi
mov esi, dword [0x44a4e4]
mov ebx, dword [esp + 0x44]
mov edx, dword [esp + 0x3c]
nop
nop
cmp dword [esi + edi*8], 0x299a4ecd
je 0x43fb1c
inc edi
cmp ebp, edi
jne 0x43fb00
mov edi, ecx
jmp 0x43fb58
mov ebx, dword [esp + 0x44]
mov edx, dword [esp + 0x3c]
jmp 0x43fb58
mov ebp, dword [esi + edi*8 + 4]
mov edi, ecx
cmp ebp, ecx
je 0x43fb58
lea ecx, [esp + 0x10]
lea edx, [esp + 0x18]
push ecx
push dword [esp + 0xc]
push eax
push dword [esp + 0x18]
push edx
push dword [esp + 0x48]
push 0x18
push ebp
push dword [0x44a4e8]
mov esi, eax
call fcn.0043c7c0
mov edx, dword [esp + 0x60]
add esp, 0x24
mov edi, eax
mov eax, esi
test edi, edi
js 0x43fbd1
test edx, edx
je 0x43fb65
mov ecx, dword [eax + 4]
mov dword [edx], ecx
test ebx, ebx
je 0x43fbd1
cmp dword [esp + 0x40], 0
je 0x43fbcc
mov dword [esp + 0xc], edi
mov edx, dword [ebx]
mov ecx, dword [eax + 8]
cmp edx, ecx
jb 0x43fb7f
mov edx, ecx
lea esi, [eax + 0xc]
mov ecx, edx
shr ecx, 2
mov ebp, dword [esp + 0x40]
mov edi, ebp
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov ecx, edx
and ecx, 0xfffffffc
add ebp, ecx
lea esi, [eax + ecx]
add esi, 0xc
mov ecx, edx
shr ecx, 1
and ecx, 1
mov dword [esp + 8], esi
mov edi, ebp
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
test dl, 1
mov edi, dword [esp + 0xc]
je 0x43fbcc
and edx, 2
mov ecx, dword [esp + 8]
movzx ecx, byte [ecx + edx]
mov byte [ebp + edx], cl
mov ecx, dword [eax + 8]
mov dword [ebx], ecx
push eax
call fcn.0043af70
add esp, 4
mov eax, edi
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret