Function at 0x43d1f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov ebx, ecx
mov edi, dword [ebp + 8]
mov dword [edi + 8], 0
mov dword [edi + 4], 0
mov dword [edi], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x30], 0x100000
mov dword [esp + 0x10], 0
mov dword [esp + 4], 0xb08f8e8d
xor eax, eax
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 4]
mov ecx, eax
and ecx, 1
mov esi, eax
or esi, 0xd825ce5d
add esi, ecx
xor esi, edx
mov edx, esi
and edx, 1
xor esi, 1
lea edx, [esi + edx*2]
add dl, 0x2e
mov byte [esp + eax + 4], dl
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 4
jb 0x43d240
mov eax, dword [esp + 4]
mov ecx, dword [0x44f6fc]
test ecx, ecx
je 0x43d2ce
xor edx, edx
mov esi, dword [0x44f700]
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x3e416e49
je 0x43d2a0
inc edx
cmp ecx, edx
jne 0x43d290
jmp 0x43d2ce
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43d2ce
lea eax, [esp + 0x30]
lea edx, [esp + 0x10]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 6
push dword [0x44f704]
push ecx
call fcn.0043f170
add esp, 0x24
test eax, eax
js 0x43d972
cmp dword [ebx + 4], 0
je 0x43d900
mov dword [esp + 0x20], ebx
mov eax, dword [ebx + 4]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 4], 0xf7f70908
xor edx, edx
mov ecx, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
or esi, 0x641210fe
lea edi, [edx + esi]
inc edi
mov esi, edi
and esi, 2
mov ebx, edi
or edi, 2
imul edi, esi
xor esi, 2
and ebx, 0xfffffffd
imul ebx, esi
mov esi, edx
xor esi, 0x641210fe
add esi, edi
movzx edi, byte [esp + edx + 4]
add esi, ebx
mov ebx, esi
xor ebx, 0x8c66e5d9
xor esi, edi
xor edi, 0x8c66e5d9
not esi
and esi, ebx
add edi, ebx
add edi, 0xba5ab09
add esi, esi
mov ebx, edi
sub ebx, esi
and edi, 1
xor ebx, 1
lea ebx, [ebx + edi*2]
mov byte [esp + edx + 4], bl
inc edx
dec ecx
cmp edx, 4
jne 0x43d330
mov dword [esp + 0x34], 0x7fff
cmp eax, 2
je 0x43d3ae
mov dword [esp + 0x34], 0
mov eax, 0xfffeffff
je 0x43d3ba
mov eax, SysReAllocString
mov edx, dword [esp + 4]
mov ecx, edx
sar ecx, 0x1f
mov dword [esp + 0x14], eax
cmp edx, eax
mov dword [esp + 0x2c], ecx
mov eax, ecx
sbb eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x20]
jae 0x43d88f
mov dword [esp + 0x1c], 0
mov dword [esp], 0
xor edi, edi
nop
nop
mov dword [esp + 0x28], edx
mov ecx, ebx
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x54]
push eax
push dword [esp + 0x3c]
push edx
call fcn.0043cde0
mov edx, dword [esp + 0x28]
cmp eax, 0xbfffffff
ja 0x43d88f
test eax, eax
js 0x43d860
cmp dword [esp + 0x58], 0x1000
jne 0x43d860
test byte [esp + 0x54], 0x66
je 0x43d860
mov esi, dword [esp + 0x40]
cmp dword [esp + 0x30], esi
mov ecx, dword [esp + 0x44]
mov eax, 0
mov dword [esp + 0x38], ecx
sbb eax, ecx
jae 0x43d5be
mov dword [esp + 4], 0xb08f8e8d
xor eax, eax
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 4]
mov ecx, eax
and ecx, 1
mov ebx, eax
or ebx, 0xd825ce5d
add ebx, ecx
xor ebx, edx
mov edx, ebx
and edx, 1
xor ebx, 1
lea edx, [ebx + edx*2]
add dl, 0x2e
mov byte [esp + eax + 4], dl
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 4
jb 0x43d470
mov eax, dword [0x44f6fc]
test eax, eax
je 0x43d4fa
mov ebx, dword [esp + 4]
xor edx, edx
mov ecx, dword [0x44f700]
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ecx + edx*8], 0x16194952
je 0x43d4d0
inc edx
cmp eax, edx
jne 0x43d4c0
jmp 0x43d4fa
mov eax, dword [ecx + edx*8 + 4]
cmp eax, ebx
je 0x43d4fa
push 0x8000
lea ecx, [esp + 0x40]
push ecx
lea ecx, [esp + 0x18]
push ecx
push 0xffffffffffffffff
push 4
push dword [0x44f704]
push eax
call fcn.0043f170
add esp, 0x1c
mov dword [esp + 0x3c], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x30], esi
mov dword [esp + 4], 0xb08f8e8d
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 4]
mov ecx, eax
and ecx, 1
mov ebx, eax
or ebx, 0xd825ce5d
add ebx, ecx
xor ebx, edx
mov edx, ebx
and edx, 1
xor ebx, 1
lea edx, [ebx + edx*2]
add dl, 0x2e
mov byte [esp + eax + 4], dl
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 4
jb 0x43d520
mov eax, dword [esp + 4]
mov ecx, dword [0x44f6fc]
test ecx, ecx
je 0x43d5ae
xor edx, edx
mov ebx, dword [0x44f700]
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebx + edx*8], 0x3e416e49
je 0x43d580
inc edx
cmp ecx, edx
jne 0x43d570
jmp 0x43d5ae
mov ecx, dword [ebx + edx*8 + 4]
cmp ecx, eax
je 0x43d5ae
push 4
push 0x3000
lea eax, [esp + 0x38]
push eax
push 0
lea eax, [esp + 0x20]
push eax
push 0xffffffffffffffff
push 6
push dword [0x44f704]
push ecx
call fcn.0043f170
add esp, 0x24
test eax, eax
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
js 0x43d88f
mov ecx, ebx
lea eax, [esp + 0x70]
push eax
push dword [esp + 0x3c]
push esi
push dword [esp + 0x1c]
push dword [esp + 0x3c]
push edx
call fcn.0043d080
test eax, eax
jns 0x43d5e7
cmp eax, 0x8000000d
jne 0x43d860
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov edx, dword [ebp + 0x10]
cmp eax, edx
sbb ecx, 0
jb 0x43d860
push dword [ebp + 0x14]
push edx
push dword [ebp + 0xc]
push eax
push dword [esp + 0x20]
lea eax, [esp + 0x18]
push eax
call fcn.0043d9c0
add esp, 0x18
mov esi, dword [esp + 4]
mov eax, dword [esp + 8]
mov dword [esp + 0x50], eax
cmp esi, eax
je 0x43d84a
mov dword [esp + 0x5c], esi
mov ecx, dword [esp]
mov eax, dword [esp + 0x28]
jmp 0x43d687
push dword [esp]
call fcn.0040c700
add esp, 4
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
lea eax, [ecx + eax*8]
mov dword [esp + 0x1c], eax
mov edi, ecx
mov edx, dword [esp + 0x68]
add edi, edx
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x38]
mov dword [ecx + edx], ebx
mov ebx, edx
mov edx, dword [esp + 0x6c]
mov dword [ecx + ebx + 4], edx
add edi, 8
add esi, 4
cmp esi, dword [esp + 0x50]
je 0x43d80f
mov ebx, dword [esi]
sub ebx, dword [esp + 0x10]
mov edx, ebx
sar edx, 0x1f
add ebx, eax
mov dword [esp + 0x38], ebx
adc edx, dword [esp + 0x2c]
mov dword [esp + 0x6c], edx
mov edx, edi
sub edx, ecx
cmp edi, dword [esp + 0x1c]
jne 0x43d666
mov dword [esp], ecx
mov dword [esp + 0x68], edx
mov ecx, edx
sar ecx, 3
lea eax, [ecx + 1]
mov edx, ecx
shr edx, 1
add edx, ecx
cmp edx, eax
ja 0x43d6c5
mov edx, eax
mov dword [esp + 0x1c], edx
lea eax, [edx*8]
push eax
call fcn.0040c6f0
add esp, 4
mov ecx, eax
mov edx, dword [esp]
test edx, edx
je 0x43d64f
mov eax, edi
not eax
and eax, edx
mov ebx, edx
not ebx
and ebx, edi
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], eax
sub ebx, eax
cmp ecx, edx
mov dword [esp + 0x24], ecx
jbe 0x43d7c2
mov dword [esp + 0x18], ebx
mov eax, dword [esp + 0x18]
add eax, edx
cmp eax, ecx
mov ebx, dword [esp + 0x18]
jbe 0x43d7c2
test ebx, ebx
je 0x43d640
mov eax, dword [esp]
add eax, ebx
dec eax
mov ecx, dword [esp + 0x24]
add ecx, ebx
dec ecx
mov edx, ebx
and edx, 7
je 0x43d754
neg edx
xor edi, edi
nop
nop
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
dec edi
cmp edx, edi
jne 0x43d740
add eax, edi
add ecx, edi
add dword [esp + 0x18], edi
mov edx, dword [esp + 0x64]
sub edx, dword [esp + 0x60]
cmp edx, 0xfffffff8
mov ebx, dword [esp + 0x18]
ja 0x43d640
neg ebx
xor edi, edi
nop
nop
nop
movzx edx, byte [eax + edi]
mov byte [ecx + edi], dl
movzx edx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], dl
movzx edx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], dl
movzx edx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], dl
movzx edx, byte [eax + edi - 4]
mov byte [ecx + edi - 4], dl
movzx edx, byte [eax + edi - 5]
mov byte [ecx + edi - 5], dl
movzx edx, byte [eax + edi - 6]
mov byte [ecx + edi - 6], dl
movzx edx, byte [eax + edi - 7]
mov byte [ecx + edi - 7], dl
add edi, 0xfffffff8
cmp ebx, edi
jne 0x43d770
jmp 0x43d640
mov ecx, ebx
shr ecx, 2
mov eax, edx
mov edi, dword [esp + 0x24]
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, ebx
and eax, 0xfffffffc
mov ecx, dword [esp + 0x24]
lea edi, [ecx + eax]
add eax, edx
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov edx, eax
mov dword [esp + 0x18], edi
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
test bl, 1
je 0x43d640
and ebx, 2
movzx eax, byte [eax + ebx]
mov ecx, dword [esp + 0x18]
mov byte [ecx + ebx], al
jmp 0x43d640
mov eax, dword [ebp + 8]
mov dword [eax + 4], edi
mov dword [eax], ecx
mov edx, dword [esp + 0x1c]
mov dword [eax + 8], edx
mov eax, dword [esp + 0x5c]
test eax, eax
mov esi, dword [esp + 0x14]
je 0x43d886
mov dword [esp], ecx
cmp eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x20]
je 0x43d864
push eax
call fcn.0040c700
add esp, 4
mov dword [esp + 4], 0
jmp 0x43d864
mov eax, dword [ebp + 8]
mov dword [eax + 4], edi
mov ecx, dword [esp]
mov dword [eax], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 8], ecx
nop
nop
nop
nop
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x40]
add edx, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
adc eax, dword [esp + 0x4c]
cmp edx, esi
mov dword [esp + 0x2c], eax
sbb eax, dword [esp + 0x34]
jb 0x43d3f0
jmp 0x43d88f
mov dword [esp], ecx
mov ebx, dword [esp + 0x20]
jmp 0x43d864
mov dword [esp + 4], 0xb08f8e8d
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 4]
mov ecx, eax
and ecx, 1
mov esi, eax
or esi, 0xd825ce5d
add esi, ecx
xor esi, edx
mov edx, esi
and edx, 1
xor esi, 1
lea edx, [esi + edx*2]
add dl, 0x2e
mov byte [esp + eax + 4], dl
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 4
jb 0x43d8a0
mov eax, dword [0x44f6fc]
test eax, eax
mov edi, dword [ebp + 8]
je 0x43d972
mov ecx, dword [esp + 4]
xor edx, edx
mov esi, dword [0x44f700]
nop
cmp dword [esi + edx*8], 0x16194952
je 0x43d948
inc edx
cmp eax, edx
jne 0x43d8f0
jmp 0x43d972
push 0xbbf966b4
push dword [0x44f6f0]
call fcn.00441f60
add esp, 8
test eax, eax
je 0x43d97e
mov ecx, dword [ebx]
test ecx, ecx
je 0x43d2e0
mov dword [esp + 4], 0
lea edx, [esp + 4]
push edx
push ecx
call eax
test eax, eax
je 0x43d98a
cmp dword [esp + 4], 0
je 0x43d98a
mov dword [ebx + 4], 3
jmp 0x43d2e0
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x43d972
lea ecx, [esp + 0x3c]
lea edx, [esp + 0x10]
push 0x8000
push ecx
push edx
push 0xffffffffffffffff
push 4
push dword [0x44f704]
push eax
call fcn.0043f170
add esp, 0x1c
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
mov dword [ebx + 4], 1
jmp 0x43d2e0
lea eax, [esp + 0x48]
push eax
call fcn.004427e0
add esp, 4
test al, al
je 0x43d2e0
mov eax, dword [esp + 0x48]
mov ecx, 2
cmp eax, 3
je 0x43d9af
mov ecx, eax
mov dword [ebx + 4], ecx
jmp 0x43d2e0