Function at 0x43bce0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x68
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x7c]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x18], 0x100000
mov dword [esp + 4], 0
mov dword [esp + 0x30], 0x14151617
mov word [esp + 0x34], 0
mov eax, 0x3c
mov ecx, 0x24b0a5c3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0xc]
lea esi, [eax - 0x64b0a600]
mov edi, ecx
and edi, 0x2010056d
and esi, 0x99004212
or esi, edi
xor esi, 0x225f1d6d
or esi, edx
and edx, eax
xor edx, esi
mov esi, edx
and esi, 0xd1
mov edi, edx
and edi, 2
mov ebx, edi
xor ebx, 2
imul ebx, esi
or esi, 2
imul esi, edi
xor edx, 0xd3
add edx, ebx
add edx, esi
inc dl
mov byte [esp + eax - 0xc], dl
inc eax
dec ecx
cmp eax, 0x42
jne 0x43bd40
mov eax, dword [esp + 0x30]
mov ecx, dword [0x44d110]
test ecx, ecx
je 0x43bdee
xor edx, edx
mov esi, dword [0x44d114]
nop
cmp dword [esi + edx*8], 0x98d5a07f
je 0x43bdc0
inc edx
cmp ecx, edx
jne 0x43bdb0
jmp 0x43bdee
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43bdee
lea eax, [esp + 0x18]
lea edx, [esp + 4]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 0x18
push ecx
push dword [0x44d118]
call fcn.0043dd00
add esp, 0x24
test eax, eax
js 0x43c44a
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 8], 0xd1cdcfcc
mov dword [esp + 0xc], 0
mov eax, 0x7b7378cd
mov ecx, 0x32
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x7b7378c5]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
mov esi, edx
and esi, 0x123220fc
mov edi, edx
and edi, 2
mov ebx, edi
xor ebx, 2
imul ebx, esi
or esi, 2
imul esi, edi
mov edi, edx
xor edi, 0xfe
add edi, ebx
add edi, esi
and edx, 1
xor edi, 1
lea edx, [edi + edx*2]
mov byte [esp + eax - 0x7b7378c5], dl
inc eax
dec ecx
cmp eax, 0x7b7378d5
jne 0x43be50
mov ebx, dword [esp + 8]
cmp ebx, 0x7ffffffe
mov esi, dword [esp + 0x1c]
ja 0x43c37f
mov dword [esp], 0
xor ebp, ebp
xor edi, edi
jmp 0x43bee4
mov eax, dword [esp + 0x7c]
mov dword [eax + 4], edi
mov dword [eax], ebp
mov ecx, dword [esp]
mov dword [eax + 8], ecx
mov ebx, dword [esp + 0x3c]
add ebx, dword [esp + 0x30]
cmp ebx, 0x7fffffff
jae 0x43c37f
mov ecx, esi
push 0
push 0x1c
lea eax, [esp + 0x38]
push eax
push 0
push ebx
call fcn.0043baf0
cmp eax, 0xbfffffff
ja 0x43c37f
test eax, eax
js 0x43bed0
cmp dword [esp + 0x40], 0x1000
jne 0x43bed0
test byte [esp + 0x44], 0x66
je 0x43bed0
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x18]
cmp eax, edx
mov dword [esp + 0x24], ebx
jbe 0x43c118
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], ebp
mov dword [esp + 8], 0x14151617
mov word [esp + 0xc], 0
mov ecx, 0x3c
mov edx, 0x24b0a5c3
nop
nop
nop
nop
movzx ebx, byte [esp + ecx - 0x34]
lea esi, [ecx - 0x64b0a600]
mov ebp, edx
and ebp, 0x2010056d
and esi, 0x99004212
or esi, ebp
xor esi, 0x225f1d6d
or esi, ebx
and ebx, ecx
xor ebx, esi
mov esi, ebx
and esi, 0xd1
mov eax, ebx
and eax, 2
mov ebp, eax
xor ebp, 2
imul ebp, esi
or esi, 2
imul esi, eax
xor ebx, 0xd3
add ebx, ebp
add ebx, esi
inc bl
mov byte [esp + ecx - 0x34], bl
inc ecx
dec edx
cmp ecx, 0x42
jne 0x43bf50
mov ecx, dword [0x44d110]
test ecx, ecx
je 0x43bfe0
mov edx, dword [esp + 8]
xor esi, esi
mov ebx, dword [0x44d114]
mov eax, dword [esp + 0x20]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebx + esi*8], 0x6dbc3610
je 0x43bfe6
inc esi
cmp ecx, esi
jne 0x43bfd0
jmp 0x43c014
mov eax, dword [esp + 0x20]
jmp 0x43c014
mov ecx, dword [ebx + esi*8 + 4]
cmp ecx, edx
je 0x43c014
push 0x8000
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0xc]
push eax
push 0xffffffffffffffff
push 0x10
push ecx
push dword [0x44d118]
call fcn.0043dd00
add esp, 0x1c
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], 0
mov dword [esp + 0x18], eax
mov dword [esp + 8], 0x14151617
mov word [esp + 0xc], 0
mov eax, 0x3c
mov ecx, 0x24b0a5c3
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x34]
lea esi, [eax - 0x64b0a600]
mov ebx, ecx
and ebx, 0x2010056d
and esi, 0x99004212
or esi, ebx
xor esi, 0x225f1d6d
or esi, edx
and edx, eax
xor edx, esi
mov esi, edx
and esi, 0xd1
mov ebx, edx
and ebx, 2
mov ebp, ebx
xor ebp, 2
imul ebp, esi
or esi, 2
imul esi, ebx
xor edx, 0xd3
add edx, ebp
add edx, esi
inc dl
mov byte [esp + eax - 0x34], dl
inc eax
dec ecx
cmp eax, 0x42
jne 0x43c040
mov eax, dword [esp + 8]
mov ecx, dword [0x44d110]
test ecx, ecx
je 0x43c0d0
xor edx, edx
mov esi, dword [0x44d114]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x24]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x98d5a07f
je 0x43c0da
inc edx
cmp ecx, edx
jne 0x43c0c0
jmp 0x43c108
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x24]
jmp 0x43c108
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43c108
push 4
push 0x3000
lea eax, [esp + 0x20]
push eax
push 0
lea eax, [esp + 0x14]
push eax
push 0xffffffffffffffff
push 0x18
push ecx
push dword [0x44d118]
call fcn.0043dd00
add esp, 0x24
test eax, eax
mov esi, dword [esp + 0x1c]
js 0x43c37f
mov edx, dword [esp + 0x18]
mov ecx, esi
lea eax, [esp + 0x64]
push eax
push edx
push dword [esp + 0xc]
push ebx
call fcn.0043bbe0
test eax, eax
jns 0x43c139
cmp eax, 0x8000000d
jne 0x43bed0
push dword [esp + 0x88]
push dword [esp + 0x88]
push dword [esp + 0x88]
push dword [esp + 0x70]
push dword [esp + 0x14]
lea eax, [esp + 0x1c]
push eax
call fcn.0043c460
add esp, 0x18
mov eax, dword [esp + 8]
mov edx, dword [esp + 0xc]
cmp eax, edx
je 0x43bec1
mov dword [esp + 0x4c], eax
mov esi, eax
mov dword [esp + 0x5c], edx
jmp 0x43c19a
mov edi, ebp
mov ebp, ebx
mov dword [ebp + ecx], eax
add edi, 4
add esi, 4
cmp esi, edx
mov ebx, dword [esp + 0x24]
je 0x43c33d
mov eax, dword [esi]
add eax, ebx
sub eax, dword [esp + 4]
mov ecx, edi
mov ebx, ebp
sub ecx, ebp
mov ebp, edi
cmp edi, dword [esp]
jne 0x43c180
mov dword [esp + 0x20], eax
mov dword [esp + 0x60], ecx
sar ecx, 2
lea eax, [ecx + 1]
mov edi, ecx
shr edi, 1
add edi, ecx
cmp edi, eax
ja 0x43c1c9
mov edi, eax
lea eax, [edi*4]
push eax
call fcn.00409860
add esp, 4
test ebx, ebx
je 0x43c320
mov ecx, ebx
xor ecx, ebp
mov edx, ebx
not edx
and edx, ebp
add edx, edx
mov dword [esp + 0x54], edx
mov dword [esp + 0x58], ecx
sub edx, ecx
cmp eax, ebx
mov ebp, ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], ebx
jbe 0x43c25b
lea ecx, [edx + ebp]
cmp ecx, eax
jbe 0x43c25b
test edx, edx
je 0x43c310
mov eax, dword [esp + 0x14]
add eax, edx
dec eax
mov ecx, dword [esp + 0x28]
add ecx, edx
dec ecx
mov ebp, edx
and ebp, 7
je 0x43c29e
mov dword [esp + 0x50], edx
mov dword [esp], edi
neg ebp
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [eax + edi]
mov byte [ecx + edi], dl
dec edi
cmp ebp, edi
jne 0x43c240
add eax, edi
add ecx, edi
mov ebp, dword [esp + 0x50]
add ebp, edi
mov edi, dword [esp]
jmp 0x43c2a0
mov ecx, edx
shr ecx, 2
mov ebx, edx
mov edx, ebp
mov dword [esp], edi
mov edi, eax
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov edx, ebx
and edx, 0xfffffffc
add eax, edx
add edx, ebp
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov ebp, edx
mov edi, eax
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
mov edi, dword [esp]
test bl, 1
je 0x43c310
and ebx, 2
movzx ecx, byte [edx + ebx]
mov byte [eax + ebx], cl
jmp 0x43c310
mov ebp, edx
mov edx, dword [esp + 0x58]
sub edx, dword [esp + 0x54]
cmp edx, 0xfffffff8
ja 0x43c310
neg ebp
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
movzx ebx, byte [eax + edx - 1]
mov byte [ecx + edx - 1], bl
movzx ebx, byte [eax + edx - 2]
mov byte [ecx + edx - 2], bl
movzx ebx, byte [eax + edx - 3]
mov byte [ecx + edx - 3], bl
movzx ebx, byte [eax + edx - 4]
mov byte [ecx + edx - 4], bl
movzx ebx, byte [eax + edx - 5]
mov byte [ecx + edx - 5], bl
movzx ebx, byte [eax + edx - 6]
mov byte [ecx + edx - 6], bl
movzx ebx, byte [eax + edx - 7]
mov byte [ecx + edx - 7], bl
add edx, 0xfffffff8
cmp ebp, edx
jne 0x43c2c0
nop
nop
nop
push dword [esp + 0x14]
call fcn.00409870
add esp, 4
mov eax, dword [esp + 0x28]
lea ecx, [eax + edi*4]
mov dword [esp], ecx
mov edi, eax
mov ecx, dword [esp + 0x60]
add edi, ecx
mov ebp, eax
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x20]
jmp 0x43c184
mov eax, dword [esp + 0x7c]
mov dword [eax + 4], edi
mov dword [eax], ebp
mov ecx, dword [esp]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x43c376
cmp eax, edx
mov esi, dword [esp + 0x1c]
je 0x43bed0
push eax
call fcn.00409870
add esp, 4
mov dword [esp + 8], 0
jmp 0x43bed0
mov esi, dword [esp + 0x1c]
jmp 0x43bed0
mov dword [esp + 8], 0x14151617
mov word [esp + 0xc], 0
mov eax, 0x3c
mov ecx, 0x24b0a5c3
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x34]
lea esi, [eax - 0x64b0a600]
mov edi, ecx
and edi, 0x2010056d
and esi, 0x99004212
or esi, edi
xor esi, 0x225f1d6d
or esi, edx
and edx, eax
xor edx, esi
mov esi, edx
and esi, 0xd1
mov edi, edx
and edi, 2
mov ebx, edi
xor ebx, 2
imul ebx, esi
or esi, 2
imul esi, edi
xor edx, 0xd3
add edx, ebx
add edx, esi
inc dl
mov byte [esp + eax - 0x34], dl
inc eax
dec ecx
cmp eax, 0x42
jne 0x43c3a0
mov eax, dword [0x44d110]
test eax, eax
je 0x43c44a
mov ecx, dword [esp + 8]
xor edx, edx
mov esi, dword [0x44d114]
nop
nop
cmp dword [esi + edx*8], 0x6dbc3610
je 0x43c420
inc edx
cmp eax, edx
jne 0x43c410
jmp 0x43c44a
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x43c44a
lea ecx, [esp + 0x2c]
lea edx, [esp + 4]
push 0x8000
push ecx
push edx
push 0xffffffffffffffff
push 0x10
push eax
push dword [0x44d118]
call fcn.0043dd00
add esp, 0x1c
mov eax, dword [esp + 0x7c]
add esp, 0x68
pop esi
pop edi
pop ebx
pop ebp
ret 0x10