Function at 0x43abf0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov dword [esp + 0x24], 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 + 0x3c], 0x100000
mov dword [esp + 0x18], 0
mov dword [esp + 0xc], 0xd8dbdac5
xor eax, eax
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0xc]
mov esi, eax
and esi, 1
xor esi, 0x7ea16831
mov ecx, eax
and ecx, 2
sub ecx, esi
mov esi, ecx
and esi, edx
mov ebx, esi
or ebx, 0xfd
inc ebx
mov edi, esi
and edi, 0xffffffdd
imul edi, ebx
mov ebx, esi
and ebx, 2
or esi, 2
imul esi, ebx
sub edi, esi
add ecx, edx
add ecx, edi
add cl, 0xf5
mov byte [esp + eax + 0xc], cl
inc eax
cmp eax, 4
jne 0x43ac40
mov eax, dword [esp + 0xc]
mov ecx, dword [0x44c3b8]
test ecx, ecx
je 0x43acde
xor edx, edx
mov esi, dword [0x44c3bc]
cmp dword [esi + edx*8], 0x3e416e49
je 0x43acb0
inc edx
cmp ecx, edx
jne 0x43aca0
jmp 0x43acde
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43acde
lea eax, [esp + 0x3c]
lea edx, [esp + 0x18]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 6
push ecx
push dword [0x44c3c0]
call fcn.0043ce20
add esp, 0x24
test eax, eax
mov esi, dword [esp + 0x24]
js 0x43b3f2
cmp dword [esi + 4], 0
je 0x43b380
mov eax, dword [esi + 4]
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 + 0xc], 0x797d7b04
mov word [esp + 0x10], 0
mov ecx, 0x1f
mov edx, 0xc0
movzx esi, byte [esp + ecx - 0x13]
mov edi, esi
not edi
and edi, 0xe2
mov ebx, esi
xor ebx, 0xe2
or esi, 0x1d
and esi, ebx
or esi, edi
mov edi, edx
and edi, 0xe2
mov ebx, ecx
and ebx, 0x1d
or ebx, edi
xor ebx, esi
add bl, 0xc5
mov byte [esp + ecx - 0x13], bl
inc ecx
dec edx
cmp ecx, 0x25
jne 0x43ad40
mov dword [esp + 0x40], 0x7fff
cmp eax, 2
je 0x43ad92
mov dword [esp + 0x40], 0
mov eax, 0xfffeffff
je 0x43ad9e
mov eax, SysReAllocString
mov edx, dword [esp + 0xc]
mov ecx, edx
sar ecx, 0x1f
mov dword [esp + 0x6c], eax
cmp edx, eax
mov dword [esp + 0x38], ecx
mov eax, ecx
sbb eax, dword [esp + 0x40]
mov esi, dword [esp + 0x24]
jae 0x43b2f3
mov dword [esp + 0x1c], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
jmp 0x43ae0a
mov edx, dword [esp + 4]
mov dword [esp + 4], 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 + 0x6c]
mov dword [esp + 0x38], eax
sbb eax, dword [esp + 0x40]
jae 0x43b2f3
mov dword [esp + 0x30], 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 + 0x48]
push edx
call fcn.0043a740
mov edx, dword [esp + 0x30]
cmp eax, 0xbfffffff
ja 0x43b2f3
test eax, eax
js 0x43ade8
cmp dword [esp + 0x60], 0x1000
jne 0x43ade8
test byte [esp + 0x5c], 0x66
je 0x43ade8
mov edi, dword [esp + 0x48]
cmp dword [esp + 0x3c], edi
mov ebx, dword [esp + 0x4c]
mov eax, 0
sbb eax, ebx
jae 0x43b00c
mov dword [esp + 0x34], ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0xc], 0xd8dbdac5
xor ebx, ebx
nop
nop
nop
movzx edx, byte [esp + ebx + 0xc]
mov ecx, ebx
and ecx, 1
xor ecx, 0x7ea16831
mov eax, ebx
and eax, 2
sub eax, ecx
mov ecx, eax
and ecx, edx
mov esi, ecx
or esi, 0xfd
inc esi
mov edi, ecx
and edi, 0xffffffdd
imul edi, esi
mov esi, ecx
and esi, 2
or ecx, 2
imul ecx, esi
sub edi, ecx
add eax, edx
add eax, edi
add al, 0xf5
mov byte [esp + ebx + 0xc], al
inc ebx
cmp ebx, 4
jne 0x43ae80
mov eax, dword [0x44c3b8]
test eax, eax
je 0x43af1a
mov ecx, dword [esp + 0xc]
xor edx, edx
mov edi, dword [0x44c3bc]
nop
nop
cmp dword [edi + edx*8], 0x16194952
je 0x43aef0
inc edx
cmp eax, edx
jne 0x43aee0
jmp 0x43af1a
mov eax, dword [edi + edx*8 + 4]
cmp eax, ecx
je 0x43af1a
push 0x8000
lea ecx, [esp + 0x48]
push ecx
lea ecx, [esp + 0x20]
push ecx
push 0xffffffffffffffff
push 4
push eax
push dword [0x44c3c0]
call fcn.0043ce20
add esp, 0x1c
mov dword [esp + 0x44], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x20]
mov dword [esp + 0x3c], eax
mov dword [esp + 0xc], 0xd8dbdac5
xor eax, eax
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0xc]
mov esi, eax
and esi, 1
xor esi, 0x7ea16831
mov ecx, eax
and ecx, 2
sub ecx, esi
mov ebx, ecx
and ebx, edx
mov esi, ebx
or esi, 0xfd
inc esi
mov edi, ebx
and edi, 0xffffffdd
imul edi, esi
mov esi, ebx
and esi, 2
or ebx, 2
imul ebx, esi
sub edi, ebx
add ecx, edx
add ecx, edi
add cl, 0xf5
mov byte [esp + eax + 0xc], cl
inc eax
cmp eax, 4
jne 0x43af40
mov eax, dword [esp + 0xc]
mov ecx, dword [0x44c3b8]
test ecx, ecx
mov esi, dword [esp + 0x24]
je 0x43afc4
xor edx, edx
mov edi, dword [0x44c3bc]
mov ebx, dword [esp + 0x34]
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0x3e416e49
je 0x43afce
inc edx
cmp ecx, edx
jne 0x43afb0
mov edi, dword [esp + 0x20]
jmp 0x43b000
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x34]
jmp 0x43b000
mov ecx, dword [edi + edx*8 + 4]
cmp ecx, eax
mov edi, dword [esp + 0x20]
je 0x43b000
push 4
push 0x3000
lea eax, [esp + 0x44]
push eax
push 0
lea eax, [esp + 0x28]
push eax
push 0xffffffffffffffff
push 6
push ecx
push dword [0x44c3c0]
call fcn.0043ce20
add esp, 0x24
test eax, eax
mov edx, dword [esp + 0x30]
js 0x43b2f3
mov ecx, esi
lea eax, [esp + 0x70]
push eax
push ebx
push edi
push dword [esp + 0x24]
push dword [esp + 0x48]
push edx
call fcn.0043aa60
test eax, eax
jns 0x43b032
cmp eax, 0x8000000d
jne 0x43ade0
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov edx, dword [ebp + 0x10]
cmp eax, edx
sbb ecx, 0
jb 0x43ade0
push dword [ebp + 0x14]
push edx
push dword [ebp + 0xc]
push eax
push dword [esp + 0x28]
lea eax, [esp + 0x20]
push eax
call fcn.0043b440
add esp, 0x18
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x58], ecx
cmp eax, ecx
je 0x43b2ca
mov dword [esp + 0x64], eax
mov esi, eax
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 4]
jmp 0x43b0d6
push dword [esp + 8]
call fcn.0040cc50
add esp, 4
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
lea eax, [ecx + edi*8]
mov dword [esp + 0x1c], eax
mov edx, ecx
add edx, ebx
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0x20]
mov dword [ecx + ebx], edi
mov edi, dword [esp + 0x34]
mov dword [ecx + ebx + 4], edi
add edx, 8
add esi, 4
cmp esi, dword [esp + 0x58]
je 0x43b283
mov edi, dword [esi]
sub edi, dword [esp + 0x18]
mov ebx, edi
sar ebx, 0x1f
add edi, eax
mov dword [esp + 0x20], edi
adc ebx, dword [esp + 0x38]
mov dword [esp + 0x34], ebx
mov ebx, edx
sub ebx, ecx
cmp edx, dword [esp + 0x1c]
jne 0x43b0b7
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov ecx, ebx
sar ecx, 3
lea eax, [ecx + 1]
mov edi, ecx
shr edi, 1
add edi, ecx
cmp edi, eax
ja 0x43b115
mov edi, eax
mov eax, edi
and eax, 0xfffffff7
mov ecx, edi
and ecx, 8
mov edx, edi
or edx, 8
imul edx, ecx
xor ecx, 8
imul ecx, eax
add edx, ecx
push edx
call fcn.0040cc40
add esp, 4
mov ecx, eax
mov edx, dword [esp + 8]
test edx, edx
je 0x43b0a8
mov dword [esp + 0x1c], edi
cmp ecx, edx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ecx
jbe 0x43b1ee
cmp dword [esp + 4], ecx
jbe 0x43b1ee
test ebx, ebx
je 0x43b090
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x28]
add eax, edx
dec eax
mov ecx, dword [esp + 0x2c]
add ecx, edx
dec ecx
mov edi, edx
and edi, 3
je 0x43b1a4
neg edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x43b190
add eax, edx
add ecx, edx
add edx, dword [esp + 0x28]
mov edi, dword [esp + 8]
sub edi, dword [esp + 4]
cmp edi, 0xfffffffc
ja 0x43b090
neg edx
xor edi, edi
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
add edi, 0xfffffffc
cmp edx, edi
jne 0x43b1c0
jmp 0x43b090
mov ecx, ebx
shr ecx, 2
mov eax, edx
mov edi, dword [esp + 0x2c]
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, ebx
xor eax, 3
mov ecx, edx
mov edx, ebx
or edx, 0xfffffffc
and edx, eax
mov eax, dword [esp + 0x2c]
lea edi, [eax + edx]
add edx, ecx
mov eax, ebx
and eax, 3
mov ecx, eax
shr ecx, 1
mov dword [esp + 0x68], edx
mov dword [esp + 4], edi
mov ebx, dword [esp + 0x68]
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov ecx, eax
xor ecx, 0xfffffffe
or eax, 1
and eax, ecx
je 0x43b090
mov edi, dword [esp + 0x28]
and edi, 2
movzx ecx, byte [edx + edi]
mov ebx, dword [esp + 4]
mov byte [ebx + edi], cl
cmp eax, 1
je 0x43b090
movzx ecx, byte [edx + edi + 1]
mov ebx, dword [esp + 4]
mov byte [ebx + edi + 1], cl
cmp eax, 2
je 0x43b090
movzx eax, byte [edx + edi + 2]
mov ecx, dword [esp + 4]
mov byte [ecx + edi + 2], al
jmp 0x43b090
mov eax, dword [ebp + 8]
mov dword [eax + 4], edx
mov dword [eax], ecx
mov esi, dword [esp + 0x1c]
mov dword [eax + 8], esi
mov eax, dword [esp + 0x64]
test eax, eax
je 0x43b2e6
mov dword [esp + 8], ecx
cmp eax, dword [esp + 0x58]
mov esi, dword [esp + 0x24]
je 0x43ade4
push eax
mov dword [esp + 8], edx
call fcn.0040cc50
mov edx, dword [esp + 8]
add esp, 4
mov dword [esp + 0xc], 0
jmp 0x43ade4
mov eax, dword [ebp + 8]
mov edx, dword [esp + 4]
mov dword [eax + 4], edx
mov ecx, dword [esp + 8]
mov dword [eax], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 8], ecx
jmp 0x43ade4
mov dword [esp + 8], ecx
mov esi, dword [esp + 0x24]
jmp 0x43ade4
mov dword [esp + 0xc], 0xd8dbdac5
xor eax, eax
nop
nop
nop
movzx edx, byte [esp + eax + 0xc]
mov esi, eax
and esi, 1
xor esi, 0x7ea16831
mov ecx, eax
and ecx, 2
sub ecx, esi
mov esi, ecx
and esi, edx
mov ebx, esi
or ebx, 0xfd
inc ebx
mov edi, esi
and edi, 0xffffffdd
imul edi, ebx
mov ebx, esi
and ebx, 2
or esi, 2
imul esi, ebx
sub edi, esi
add ecx, edx
add ecx, edi
add cl, 0xf5
mov byte [esp + eax + 0xc], cl
inc eax
cmp eax, 4
jne 0x43b300
mov eax, dword [0x44c3b8]
test eax, eax
je 0x43b3f2
mov ecx, dword [esp + 0xc]
xor edx, edx
mov esi, dword [0x44c3bc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x16194952
je 0x43b3c8
inc edx
cmp eax, edx
jne 0x43b370
jmp 0x43b3f2
push 0xbbf966b4
push dword [0x44c3ac]
call fcn.0043faf0
add esp, 8
test eax, eax
je 0x43b3ff
mov ecx, dword [esi]
test ecx, ecx
je 0x43acf4
mov dword [esp + 0xc], 0
lea edx, [esp + 0xc]
push edx
push ecx
call eax
test eax, eax
je 0x43b40b
cmp dword [esp + 0xc], 0
je 0x43b40b
mov dword [esi + 4], 3
jmp 0x43acf4
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x43b3f2
lea ecx, [esp + 0x44]
lea edx, [esp + 0x18]
push 0x8000
push ecx
push edx
push 0xffffffffffffffff
push 4
push eax
push dword [0x44c3c0]
call fcn.0043ce20
add esp, 0x1c
mov eax, dword [ebp + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
mov dword [esi + 4], 1
jmp 0x43acf4
lea eax, [esp + 0x50]
push eax
call fcn.00440320
add esp, 4
test al, al
je 0x43acf4
mov eax, dword [esp + 0x50]
mov ecx, 2
cmp eax, 3
je 0x43b430
mov ecx, eax
mov dword [esi + 4], ecx
jmp 0x43acf4