Function at 0x43f6d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x78
mov dword [esp + 0x1c], ecx
mov eax, dword [ebp + 8]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x34], 0x100000
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0x2c2d2e2f
mov word [esp + 0xc], 0
lea eax, [esp + 8]
xor ecx, ecx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [eax]
mov esi, ecx
and esi, 0xeb4a490
mov ebx, edx
xor ebx, 0xf8a5adb7
sub ebx, esi
mov esi, 0xfe
sub esi, ebx
inc ebx
xor esi, ebx
and esi, edi
xor esi, ebx
add esi, 0x24c39b67
mov edi, esi
and edi, 1
xor esi, 1
lea ebx, [esi + edi*2]
mov byte [eax], bl
inc eax
dec edx
add ecx, 0xfffffffe
cmp edx, 0xfffffffa
jne 0x43f730
mov eax, dword [esp + 8]
mov ecx, dword [0x451440]
test ecx, ecx
je 0x43f7ce
xor edx, edx
mov esi, dword [0x451444]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x3e416e49
je 0x43f7a0
inc edx
cmp ecx, edx
jne 0x43f790
jmp 0x43f7ce
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43f7ce
lea eax, [esp + 0x34]
lea edx, [esp + 0x14]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 6
push ecx
push dword [0x451448]
call fcn.004417a0
add esp, 0x24
test eax, eax
mov esi, dword [esp + 0x1c]
js 0x43feba
mov eax, dword [esi + 4]
test eax, eax
jne 0x43f854
push 0xbbf966b4
push dword [0x451434]
call fcn.004442e0
add esp, 8
test eax, eax
je 0x43f822
mov ecx, dword [esi]
test ecx, ecx
je 0x43f851
mov dword [esp + 8], 0
lea edx, [esp + 8]
push edx
push ecx
call eax
test eax, eax
je 0x43f82d
cmp dword [esp + 8], 0
je 0x43f82d
mov dword [esi + 4], 3
jmp 0x43f851
mov dword [esi + 4], 1
xor edi, edi
jmp 0x43f86d
lea eax, [esp + 0x50]
push eax
call fcn.00444a30
add esp, 4
test al, al
je 0x43f851
mov eax, dword [esp + 0x50]
mov ecx, 2
cmp eax, 3
je 0x43f84e
mov ecx, eax
mov dword [esi + 4], ecx
mov eax, dword [esi + 4]
mov edi, 0x7fff
cmp eax, 2
je 0x43f863
mov edi, 0
mov dword [esp + 0x24], 0xfffeffff
je 0x43f875
mov dword [esp + 0x24], 0x7fffffff
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 8], 0x13131110
mov dword [esp + 0xc], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x44
xor cl, byte [esp + eax + 8]
add cl, 0xac
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 8
jne 0x43f8c0
mov edx, dword [esp + 8]
mov eax, edx
sar eax, 0x1f
cmp edx, dword [esp + 0x24]
mov dword [esp + 0x30], eax
sbb eax, edi
jae 0x43fdfa
mov dword [esp + 0x18], 0
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [esp + 0x38], edi
jmp 0x43f936
mov edx, dword [esp]
mov dword [esp], edx
mov edx, dword [esp + 0x48]
add edx, dword [esp + 0x50]
mov eax, dword [esp + 0x4c]
adc eax, dword [esp + 0x54]
cmp edx, dword [esp + 0x24]
mov dword [esp + 0x30], eax
sbb eax, edi
jae 0x43fdfa
mov dword [esp + 0x28], edx
mov ecx, esi
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x64]
push eax
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x5c]
push eax
push dword [esp + 0x40]
push edx
call fcn.0043f1d0
mov edx, dword [esp + 0x28]
cmp eax, 0xbfffffff
ja 0x43fdfa
test eax, eax
js 0x43f916
cmp dword [esp + 0x60], 0x1000
jne 0x43f916
test byte [esp + 0x5c], 0x66
je 0x43f916
mov eax, dword [esp + 0x48]
mov dword [esp + 0x2c], eax
cmp dword [esp + 0x34], eax
mov ecx, dword [esp + 0x4c]
mov eax, 0
mov dword [esp + 0x40], ecx
sbb eax, ecx
jae 0x43fb3e
mov dword [esp + 8], 0x2c2d2e2f
mov word [esp + 0xc], 0
xor eax, eax
xor ecx, ecx
lea edx, [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [edx]
mov esi, eax
and esi, 0xeb4a490
mov ebx, ecx
xor ebx, 0xf8a5adb7
sub ebx, esi
mov esi, 0xfe
sub esi, ebx
inc ebx
xor esi, ebx
and esi, edi
xor esi, ebx
add esi, 0x24c39b67
mov edi, esi
and edi, 1
xor esi, 1
lea ebx, [esi + edi*2]
mov byte [edx], bl
inc edx
dec ecx
add eax, 0xfffffffe
cmp ecx, 0xfffffffa
jne 0x43f9c0
mov eax, dword [0x451440]
test eax, eax
je 0x43fa5a
mov ecx, dword [esp + 8]
xor edx, edx
mov esi, dword [0x451444]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x16194952
je 0x43fa30
inc edx
cmp eax, edx
jne 0x43fa20
jmp 0x43fa5a
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x43fa5a
push 0x8000
lea ecx, [esp + 0x48]
push ecx
lea ecx, [esp + 0x1c]
push ecx
push 0xffffffffffffffff
push 4
push eax
push dword [0x451448]
call fcn.004417a0
add esp, 0x1c
mov dword [esp + 0x44], 0
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x34], eax
mov dword [esp + 8], 0x2c2d2e2f
mov word [esp + 0xc], 0
xor eax, eax
xor ecx, ecx
lea edx, [esp + 8]
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [edx]
mov esi, eax
and esi, 0xeb4a490
mov ebx, ecx
xor ebx, 0xf8a5adb7
sub ebx, esi
mov esi, 0xfe
sub esi, ebx
inc ebx
xor esi, ebx
and esi, edi
xor esi, ebx
add esi, 0x24c39b67
mov edi, esi
and edi, 1
xor esi, 1
lea ebx, [esi + edi*2]
mov byte [edx], bl
inc edx
dec ecx
add eax, 0xfffffffe
cmp ecx, 0xfffffffa
jne 0x43fa90
mov eax, dword [esp + 8]
mov ecx, dword [0x451440]
test ecx, ecx
mov edi, dword [esp + 0x38]
je 0x43fb2e
xor edx, edx
mov esi, dword [0x451444]
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x3e416e49
je 0x43fb00
inc edx
cmp ecx, edx
jne 0x43faf0
jmp 0x43fb2e
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43fb2e
push 4
push 0x3000
lea eax, [esp + 0x3c]
push eax
push 0
lea eax, [esp + 0x24]
push eax
push 0xffffffffffffffff
push 6
push ecx
push dword [0x451448]
call fcn.004417a0
add esp, 0x24
test eax, eax
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
js 0x43fdfa
mov ecx, esi
lea eax, [esp + 0x68]
push eax
push dword [esp + 0x44]
push dword [esp + 0x34]
push dword [esp + 0x20]
push dword [esp + 0x40]
push edx
call fcn.0043f520
test eax, eax
jns 0x43fb6a
cmp eax, 0x8000000d
jne 0x43f910
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x6c]
mov edx, dword [ebp + 0x10]
cmp eax, edx
sbb ecx, 0
jb 0x43f910
push dword [ebp + 0x14]
push edx
push dword [ebp + 0xc]
push eax
push dword [esp + 0x24]
lea eax, [esp + 0x1c]
push eax
call fcn.0043fed0
add esp, 0x18
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x58], ecx
cmp eax, ecx
je 0x43fdce
mov dword [esp + 0x64], eax
mov esi, eax
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0x28]
mov edx, dword [esp]
jmp 0x43fc06
push dword [esp + 4]
call fcn.0040cde0
add esp, 4
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x18]
lea eax, [ecx + eax*8]
mov dword [esp + 0x18], eax
mov edx, ecx
add edx, ebx
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
mov dword [ecx + ebx], edi
mov edi, dword [esp + 0x40]
mov dword [ecx + ebx + 4], edi
add edx, 8
add esi, 4
cmp esi, dword [esp + 0x58]
je 0x43fd83
mov edi, dword [esi]
sub edi, dword [esp + 0x14]
mov ebx, edi
sar ebx, 0x1f
add edi, eax
mov dword [esp + 0x2c], edi
adc ebx, dword [esp + 0x30]
mov dword [esp + 0x40], ebx
mov ebx, edx
sub ebx, ecx
cmp edx, dword [esp + 0x18]
jne 0x43fbe7
mov dword [esp], edx
mov dword [esp + 4], ecx
mov ecx, ebx
sar ecx, 3
lea eax, [ecx + 1]
mov edx, ecx
shr edx, 1
add edx, ecx
cmp edx, eax
ja 0x43fc44
mov edx, eax
mov dword [esp + 0x18], edx
lea eax, [edx*8]
push eax
call fcn.0040cdd0
add esp, 4
mov ecx, eax
mov edx, dword [esp + 4]
test edx, edx
je 0x43fbd4
cmp ecx, edx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x3c], ecx
jbe 0x43fd32
cmp dword [esp], ecx
jbe 0x43fd32
test ebx, ebx
je 0x43fbc0
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x20]
add eax, edx
dec eax
mov ecx, dword [esp + 0x3c]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0x43fcc4
neg edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x43fcb0
add eax, edx
add ecx, edx
add edx, dword [esp + 0x20]
mov edi, dword [esp + 4]
sub edi, dword [esp]
cmp edi, 0xfffffff8
ja 0x43fbc0
neg edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
movzx ebx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], bl
movzx ebx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], bl
movzx ebx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], bl
movzx ebx, byte [eax + edi - 4]
mov byte [ecx + edi - 4], bl
movzx ebx, byte [eax + edi - 5]
mov byte [ecx + edi - 5], bl
movzx ebx, byte [eax + edi - 6]
mov byte [ecx + edi - 6], bl
movzx ebx, byte [eax + edi - 7]
mov byte [ecx + edi - 7], bl
add edi, 0xfffffff8
cmp edx, edi
jne 0x43fce0
jmp 0x43fbc0
mov edi, ecx
mov ecx, ebx
shr ecx, 2
mov dword [esp], edx
mov eax, dword [esp]
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ecx, edx
mov edx, ebx
and edx, 0xfffffffc
mov eax, dword [esp + 0x3c]
lea edi, [eax + edx]
add edx, ecx
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov eax, edx
mov dword [esp], edi
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
test bl, 1
je 0x43fbc0
mov eax, dword [esp + 0x20]
and eax, 2
movzx ecx, byte [edx + eax]
mov edx, dword [esp]
mov byte [edx + eax], cl
jmp 0x43fbc0
mov eax, dword [ebp + 8]
mov dword [eax + 4], edx
mov dword [eax], ecx
mov esi, dword [esp + 0x18]
mov dword [eax + 8], esi
mov eax, dword [esp + 0x64]
test eax, eax
je 0x43fde9
mov dword [esp + 4], ecx
cmp eax, dword [esp + 0x58]
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x38]
je 0x43f913
push eax
mov dword [esp + 4], edx
call fcn.0040cde0
mov edx, dword [esp + 4]
add esp, 4
mov dword [esp + 8], 0
jmp 0x43f913
mov eax, dword [ebp + 8]
mov edx, dword [esp]
mov dword [eax + 4], edx
mov ecx, dword [esp + 4]
mov dword [eax], ecx
mov ecx, dword [esp + 0x18]
mov dword [eax + 8], ecx
jmp 0x43f913
mov dword [esp + 4], ecx
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x38]
jmp 0x43f913
mov dword [esp + 8], 0x2c2d2e2f
mov word [esp + 0xc], 0
lea eax, [esp + 8]
xor ecx, ecx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [eax]
mov esi, ecx
and esi, 0xeb4a490
mov ebx, edx
xor ebx, 0xf8a5adb7
sub ebx, esi
mov esi, 0xfe
sub esi, ebx
inc ebx
xor esi, ebx
and esi, edi
xor esi, ebx
add esi, 0x24c39b67
mov edi, esi
and edi, 1
xor esi, 1
lea ebx, [esi + edi*2]
mov byte [eax], bl
inc eax
dec edx
add ecx, 0xfffffffe
cmp edx, 0xfffffffa
jne 0x43fe20
mov eax, dword [0x451440]
test eax, eax
je 0x43feba
mov ecx, dword [esp + 8]
xor edx, edx
mov esi, dword [0x451444]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x16194952
je 0x43fe90
inc edx
cmp eax, edx
jne 0x43fe80
jmp 0x43feba
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x43feba
lea ecx, [esp + 0x44]
lea edx, [esp + 0x14]
push 0x8000
push ecx
push edx
push 0xffffffffffffffff
push 4
push eax
push dword [0x451448]
call fcn.004417a0
add esp, 0x1c
mov eax, dword [ebp + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10