Function at 0xa43600
Capabilities:
Encode data using xor

Disassembly:
push 2
movzx eax, cx
pop edi
shr eax, 1
push 0x5c
pop esi
cmp word [edx + eax*2 - 2], si
je 0xa43635
add cx, di
movzx eax, cx
shr eax, 1
mov word [esp + 0xc], cx
mov word [edx + eax*2 - 2], si
movzx ecx, word [esp + 0xc]
mov eax, dword [esp + 0x10]
shr ecx, 1
xor edx, edx
mov word [eax + ecx*2], dx
mov eax, dword fs:[0x30]
mov esi, 0x4000
push esi
push dword [0x769e05e0]
push dword [eax + 0x18]
call dword [0x769e3318]
mov edi, eax
test edi, edi
je 0xa771e0
push esi
xor esi, esi
push esi
push edi
call fcn.00a6c280
add esp, 0xc
mov dword [esp + 0x1c], esi
mov dword [esp + 0x34], esi
mov dword [esp + 0x24], 0x3a
mov dword [esp + 0x44], 0x2e
mov dword [esp + 0x48], 0x3f
mov eax, dword [esp + 0x10]
xor esi, esi
push eax
mov dword [esp + 0x1c], eax
inc esi
lea eax, [esp + 0x2c]
mov dword [esp + 0x18], esi
push eax
call dword [0x769e3178]
test eax, eax
js 0xa77213
movzx ecx, word [esp + 0x28]
mov eax, dword [esp + 0x2c]
shr ecx, 1
push 0x5c
pop edx
cmp word [eax + ecx*2 - 2], dx
jne 0xa77217
push dword [esp + 0x18]
call fcn.00a43920
push 0x7685d224
push dword [esp + 0x1c]
mov esi, eax
call dword [0x769e3078]
push 0x7685d210
push dword [esp + 0x24]
mov dword [esp + 0x50], eax
call dword [0x769e3078]
add esp, 0x10
cmp esi, 4
je 0xa43885
push 6
pop eax
cmp word [esp + 0x28], ax
je 0xa437c5
cmp word [esp + 0x28], 0xe
je 0xa77226
mov esi, dword [esp + 0x18]
mov edx, edi
push 0x2000
mov ecx, esi
call fcn.00a4303e
test eax, eax
jne 0xa437ee
lea eax, [esp + 0x14]
mov edx, edi
push eax
push 0x2000
mov ecx, esi
call 0xa40912
test eax, eax
jne 0xa774bf
mov esi, dword [esp + 0x14]
test esi, esi
je 0xa438cb
xor eax, eax
push 0x5c
pop edx
cmp word [edi], ax
jne 0xa77292
test esi, esi
je 0xa438e4
mov ax, word [esp + 0xc]
push 2
pop ecx
cmp ax, cx
jbe 0xa437ee
movzx eax, ax
shr eax, 1
sub eax, ecx
mov ecx, dword [esp + 0x10]
je 0xa43792
cmp word [ecx + eax*2], dx
je 0xa43792
sub eax, 1
jne 0xa43787
test eax, eax
je 0xa437ee
test esi, esi
je 0xa77340
add ecx, 2
lea eax, [ecx + eax*2]
mov dword [esp + 0x1c], eax
movzx ecx, word [eax]
mov dword [esp + 0x34], ecx
xor ecx, ecx
mov word [eax], cx
push ebx
lea eax, [esp + 0x10]
push eax
call dword [0x769e3044]
jmp 0xa43687
mov eax, dword [esp + 0x2c]
push 0x3a
pop ecx
cmp word [eax + 2], cx
jne 0xa43716
mov ecx, dword [esp + 0x18]
push 0x2000
mov edx, edi
call fcn.00a4303e
test eax, eax
je 0xa7727b
mov eax, dword fs:[0x30]
push edi
xor edi, edi
push edi
push dword [eax + 0x18]
call dword [0x769e3310]
cmp dword [esp + 0x14], edi
je 0xa43908
mov cx, word [esp + 0xc]
push 2
pop eax
cmp cx, ax
jb 0xa77503
movzx esi, cx
shr esi, 1
je 0xa4382f
lea eax, [esi + 1]
cmp eax, dword [ebp + 0xc]
ja 0xa774d2
mov eax, dword [ebp + 0xc]
movzx edx, cx
add eax, eax
lea ecx, [edx + 2]
cmp eax, ecx
jb 0xa7750a
mov edi, dword [esp + 0x20]
push edx
push dword [esp + 0x14]
push edi
call fcn.00a6c274
add esp, 0xc
xor ecx, ecx
mov word [edi + esi*2], cx
xor eax, eax
mov ecx, dword fs:[0x30]
push ebx
push eax
push dword [ecx + 0x18]
call dword [0x769e3310]
xor eax, eax
inc eax
mov ecx, dword [esp + 0x64]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00a61dc0
mov esp, ebp
pop ebp
ret 8
cmp dword [esp + 0x40], 0
je 0xa436fc
test eax, eax
je 0xa436fc
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x14]
push eax
push 0x2000
mov edx, edi
call 0xa40912
test eax, eax
jne 0xa437ee
push 0x57
call dword [0x769e30c8]
mov esi, dword [esp + 0x14]
xor eax, eax
mov word [edi], ax
jmp 0xa4374f
mov eax, dword fs:[0x18]
cmp dword [eax + 0x34], 5
je 0xa77286
mov esi, dword [esp + 0x14]
jmp 0xa43757
mov eax, dword [esp + 0x1c]
test eax, eax
je 0xa4376d
mov ecx, dword [esp + 0x34]
mov word [eax], cx
lea eax, [esp + 0xc]
push ebx
push eax
call dword [0x769e3044]
jmp 0xa437ee
cmp dword [esp + 0x1c], edi
jne 0xa4380b
jmp 0xa771fd
dec edi
add dword [eax], eax
jo 0xa77211
add al, byte [eax]
invalid
cli
add dword [eax], eax
shl byte [ebx + 3], 1
add al, dl
arpl word [ebx], ax
add byte [eax], ah
xchg ebx, eax
add dword [eax], eax
nop
or eax, dword [edx]
add al, dh
arpl word [ebx], ax
add byte [eax + 0x100001fb], ah
add eax, dword fs:[eax]
add dword [eax], eax
adc byte [ebx + eax], ah
push eax
xchg edi, eax
add dword [eax], eax
jo 0xa77257
add al, byte [eax]
cmp byte [esi], 2
add byte [eax], dh
add eax, dword fs:[eax]
cwde
add dword [edx], ecx
add byte [eax - 0x6ffffdc9], al
aaa
add al, byte [eax]
mov al, byte [0xb0000237]
aaa
add al, byte [eax]
inc eax
add cl, byte [edx]
add byte [edx + eax + 0xa], bh
add byte [eax - 0x1cfff5fe], dh
add cl, byte [edx]
add byte [eax], ah
xchg esi, eax
add eax, 0x3645000
add byte [esi], ch
add ecx, dword [edx]
add byte [esi + 3], ah
or al, byte [eax]
rol al, 3
add al, al
rol byte [ebx], 0
jo 0xa772de
add eax, dword [eax]
nop
add eax, dword fs:[eax]
adc byte [ebp + 0x64b00001], 3
add byte [eax - 0x1ffffdda], al
add byte [eax - 0x7ffffc9c], dl
xchg ebp, eax
add dword [eax], eax
mov al, 0x64
add eax, dword [eax]
and byte [esi], 2
add al, ah
rol byte [ebx], 0
mov al, byte [0x191]
rol dword [ebx], 0
add dword [eax], eax
add cl, al
add eax, dword [eax]
adc byte [eax - 0x3edfffff], bl
add eax, dword [eax]
rol byte [ecx - 0x7e2fffff], 1
add dword [eax], eax
shl byte [ebx + eax], 1
lock add eax, dword fs:[eax]
add byte [ebp + 3], ah
add byte [eax], ah
add eax, dword gs:[eax]
inc eax
add eax, dword gs:[eax]
inc eax
rol dword [ebx], 0
pushal
add eax, dword gs:[eax]
pushal
rol dword [ebx], 0
and byte [ebp + 3], 0
add cl, 3
add al, al
cmp eax, 0xc1a00006
mov al, byte [0x600003c1]
add al, byte [eax]
pushal
mov eax, dword [0x58bb000]
add byte [eax + 0x2000018d], ah
xchg esi, eax
add dword [eax], eax
add byte [ebp + eax + 0x58d5000], cl
add byte [eax], al
add ax, word [eax]
mov al, 0x8e
add eax, 0x58ed000
add al, dh
mov es, word [0x58f1000]
add byte [eax - 0x48], al
add eax, dword [eax]
and byte [esi + 3], ah
add al, dh
mov esi, 0xe6a00003
add dword [eax], eax
lock or dword [esi], eax
add byte [eax + 0x60000150], ah
or dword [esi], eax
add byte [eax - 0x1a], dl
add dword [eax], eax
mov al, byte [0xa0000609]
out 1, al
add al, dh
or dword [esi], eax
add byte [eax - 0x76], ah
add dword [eax], eax
pushal
mov al, byte [ecx]
add byte [eax + 0xa], al
push es
add byte [eax], dl
sti
add dword [eax], eax
adc bl, bh
add dword [eax], eax
push eax
lar eax, word [eax]
inc eax
add ax, word [eax]
xor dh, ch
add dword [eax], eax
nop
stc
add dword [eax], eax
rol byte [ebx - 0x7c3fffff], 1
add byte [eax], dh
or eax, dword [esi]
xor byte [ebx], cl
push es
add byte [eax], al
xchg ebx, eax
add dword [eax], eax
add byte [ebx - 0x67afffff], dl
add dword [eax], eax
adc byte [ebx], cl
add al, byte [eax]
adc byte [ebx], cl
add al, byte [eax]
loopne 0xa773c4
add dword [eax], eax
ror byte [esi - 0x721fffff], 1
add byte [eax - 0xffff9f5], ah
or eax, dword [esi]
add byte [eax], ah
dec esi
add dword [eax], eax
or ch, byte [esi + 9]
add byte [ebx + 0x6e], al
or dword [eax], eax
jbe 0xa7746c
or dword [eax], eax
test dword [esi + 9], ebp
add byte [edx - 0x5cfff692], bl
outsb dx, byte [esi]
or dword [eax], eax
lodsb al, byte [esi]
outsb dx, byte [esi]
or dword [eax], eax
mov ebp, 0xce00096e
outsb dx, byte [esi]
or dword [eax], eax
adc ebp, dword [edi + 9]
add byte [ecx], bh
outsd dx, dword [esi]
or dword [eax], eax
pop eax
outsd dx, dword [esi]
or dword [eax], eax
ja 0xa77495
or dword [eax], eax
test byte [edi + 9], ch
add byte [edi - 0x50fff691], dl
outsd dx, dword [esi]
or dword [eax], eax
retf 0x96f
sahf
jb 0xa77478
add bl, dh
jb 0xa7747c
add byte [ebx + esi*2], dh
or dword [eax], eax
jae 0xa774ed
or dword [eax], eax
invalid
jae 0xa774a0
add byte [esi], al
je 0xa774a4
add byte [esi], bl
je 0xa774a8
add byte [eax], bh
je 0xa774ac
cmp byte [ecx + ecx], dh
add byte [eax + 0x74], bl
or dword [eax], eax
pop eax
je 0xa774b0
add byte [esi + 0x74], dh
jbe 0xa7751e
or dword [eax], eax
mov dword [ecx + ecx], esi
stosb byte es:[edi], al
je 0xa774bc
add cl, dl
je 0xa774c0
add bl, ch
je 0xa774c4
add byte [ebx], al
jne 0xa774c8
add esi, dword [ebp + 9]
add byte [edx], bl
jne 0xa774cc
sbb dh, byte [ebp + 9]
add byte [edi], dh
aaa
jne 0xa774d0
add byte [ebx + 0x75], dl
or dword [eax], eax
push ebx
jne 0xa774d4
add byte [ebx + 0x75], ch
or dword [eax], eax
imul esi, dword [ebp + 9], 0
mov dword [ebp + 9], esi
add byte [ebp + esi*2 + 0x75b60009], ah
or dword [eax], eax
fdiv qword [ebp + 9]
or dword [eax], eax
movsb byte es:[edi], byte [esi]
jne 0xa774e0
add byte [esi - 0x23fff68b], dh
jne 0xa774e8
add dh, dh
jne 0xa774ec
div byte [ebp + 9]
add byte [edx], dl
jbe 0xa774f0
add byte [eax], dh
jbe 0xa774f4
xor byte [esi + 9], dh
add byte [esi + esi*2 + 9], dl
push esp
jbe 0xa774f8
add byte [edx + 0x76], bh
jp 0xa77568
or dword [eax], eax
cmpsb byte [esi], byte es:[edi]
jbe 0xa77500
add byte [ebx - 0x30fff68a], bh
mov ebx, 0xcf000976
jbe 0xa77508
add ch, dh
cmc
jbe 0xa7750c
add byte [ebx + 0x800096d], ch
ja 0xa77514
or byte [edi + 9], dh
or dword [eax], eax
add byte [ecx], ah
ja 0xa77518
and dword [edi + 9], esi
add byte [eax + 0x77], al
or dword [eax], eax
push ebx
ja 0xa77520
add byte [ebx + 0x77], ch
or dword [eax], eax
imul esi, dword [edi + 9], 0
nop
ja 0xa77528
or dword [eax], eax
add byte [esi - 0x1bfff689], dh
ja 0xa77530
mov dh, 0x77
or dword [eax], eax
in al, 0x77
or dword [eax], eax
add byte [edx], cl
js 0xa77534
or bh, byte [eax + 9]
add byte [eax], dh
js 0xa77538
add byte [ebx + 0x78], al
or dword [eax], eax
inc ebx
push edi
js 0xa77540
add byte [eax + 0x78], dh
mov ch, 0x78
or dword [eax], eax
leave
js 0xa77550
add ah, ch
js 0xa77554
add byte [esi], dl
jns 0xa77558
add byte [0x43000979], ch
sub eax, 0x43000979
bound edi, qword [ecx + 9]
add byte [esi + 0x79], dh
enter 0x979, 0