Function at 0x437350
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov edi, ecx
mov eax, dword [ebp + 8]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x34], 0x100000
mov dword [esp + 0x18], 0
mov dword [esp + 0xc], 0x585b5a45
mov byte [esp + 0x10], 0
xor eax, eax
nop
mov ecx, eax
add cl, 0xf
xor cl, byte [esp + eax + 0xc]
add cl, 0xb5
mov byte [esp + eax + 0xc], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 5
jb 0x4373a0
mov eax, dword [esp + 0xc]
mov ecx, dword [0x44a598]
test ecx, ecx
je 0x43741e
xor edx, edx
mov esi, dword [0x44a59c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x3e416e49
je 0x4373f0
inc edx
cmp ecx, edx
jne 0x4373e0
jmp 0x43741e
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43741e
lea eax, [esp + 0x34]
lea edx, [esp + 0x18]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 0x18
push ecx
push dword [0x44a5a0]
call fcn.004391b0
add esp, 0x24
test eax, eax
js 0x437afa
mov eax, dword [edi + 4]
test eax, eax
jne 0x4374a6
push 0xbbf966b4
push dword [0x44a58c]
call fcn.0043c470
add esp, 8
test eax, eax
je 0x43746e
mov ecx, dword [edi]
test ecx, ecx
je 0x4374a3
mov dword [esp + 0xc], 0
lea edx, [esp + 0xc]
push edx
push ecx
call eax
test eax, eax
je 0x43747f
cmp dword [esp + 0xc], 0
je 0x43747f
mov dword [edi + 4], 3
jmp 0x4374a3
mov dword [edi + 4], 1
mov dword [esp + 0x28], 0
jmp 0x4374c5
lea eax, [esp + 0x48]
push eax
call fcn.0043cd90
add esp, 4
test al, al
je 0x4374a3
mov eax, dword [esp + 0x48]
mov ecx, 2
cmp eax, 3
je 0x4374a0
mov ecx, eax
mov dword [edi + 4], ecx
mov eax, dword [edi + 4]
mov dword [esp + 0x28], 0x7fff
cmp eax, 2
je 0x4374bb
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0xfffeffff
je 0x4374cd
mov dword [esp + 0x24], SysStringLen
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0xc], 0x33333130
mov word [esp + 0x10], 0
mov byte [esp + 0x12], 0
mov edx, 0x816e6934
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx + 0x7e9196d8]
mov ebx, eax
mov esi, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0x3d
mul cl
mov ecx, eax
mov eax, esi
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0xfc
mov byte [esp + edx + 0x7e9196d8], al
inc edx
cmp edx, 0x816e693b
jne 0x437520
mov edx, dword [esp + 0xc]
mov eax, edx
sar eax, 0x1f
cmp edx, dword [esp + 0x24]
mov dword [esp + 0x30], eax
sbb eax, dword [esp + 0x28]
jae 0x437a6b
mov dword [esp + 0x1c], 0
mov dword [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp + 0x38], edi
jmp 0x4375e2
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 8]
mov dword [eax + 4], ecx
mov dword [eax], ebx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 8], ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x40]
add edx, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
adc eax, dword [esp + 0x4c]
cmp edx, dword [esp + 0x24]
mov dword [esp + 0x30], eax
sbb eax, dword [esp + 0x28]
jae 0x437a6b
mov dword [esp + 0x2c], edx
mov ecx, edi
lea eax, [esp + 0x58]
push eax
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x54]
push eax
push dword [esp + 0x40]
push edx
call fcn.00436f20
mov edx, dword [esp + 0x2c]
cmp eax, 0xbfffffff
ja 0x437a6b
test eax, eax
js 0x4375c0
cmp dword [esp + 0x5c], 0x1000
jne 0x4375c0
test byte [esp + 0x58], 0x66
je 0x4375c0
mov esi, dword [esp + 0x40]
cmp dword [esp + 0x34], esi
mov ebx, dword [esp + 0x44]
mov eax, 0
sbb eax, ebx
jae 0x43778e
mov dword [esp + 0xc], 0x585b5a45
mov byte [esp + 0x10], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xf
xor cl, byte [esp + eax + 0xc]
add cl, 0xb5
mov byte [esp + eax + 0xc], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 5
jb 0x437660
mov eax, dword [0x44a598]
test eax, eax
je 0x4376da
mov ecx, dword [esp + 0xc]
xor edx, edx
mov edi, dword [0x44a59c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0x16194952
je 0x4376b0
inc edx
cmp eax, edx
jne 0x4376a0
jmp 0x4376da
mov eax, dword [edi + edx*8 + 4]
cmp eax, ecx
je 0x4376da
push 0x8000
lea ecx, [esp + 0x40]
push ecx
lea ecx, [esp + 0x20]
push ecx
push 0xffffffffffffffff
push 0x10
push eax
push dword [0x44a5a0]
call fcn.004391b0
add esp, 0x1c
mov dword [esp + 0x3c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x34], esi
mov dword [esp + 0xc], 0x585b5a45
mov byte [esp + 0x10], 0
xor eax, eax
nop
nop
nop
mov ecx, eax
add cl, 0xf
xor cl, byte [esp + eax + 0xc]
add cl, 0xb5
mov byte [esp + eax + 0xc], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 5
jb 0x437700
mov eax, dword [esp + 0xc]
mov ecx, dword [0x44a598]
test ecx, ecx
je 0x43777e
xor edx, edx
mov edi, dword [0x44a59c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0x3e416e49
je 0x437750
inc edx
cmp ecx, edx
jne 0x437740
jmp 0x43777e
mov ecx, dword [edi + edx*8 + 4]
cmp ecx, eax
je 0x43777e
push 4
push 0x3000
lea eax, [esp + 0x3c]
push eax
push 0
lea eax, [esp + 0x28]
push eax
push 0xffffffffffffffff
push 0x18
push ecx
push dword [0x44a5a0]
call fcn.004391b0
add esp, 0x24
test eax, eax
mov edi, dword [esp + 0x38]
mov edx, dword [esp + 0x2c]
js 0x437a6b
mov ecx, edi
lea eax, [esp + 0x70]
push eax
push ebx
push esi
push dword [esp + 0x24]
push dword [esp + 0x40]
push edx
call fcn.004371f0
test eax, eax
jns 0x4377b4
cmp eax, 0x8000000d
jne 0x4375c0
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov edx, dword [ebp + 0x10]
cmp eax, edx
sbb ecx, 0
jb 0x4375c0
push dword [ebp + 0x14]
push edx
push dword [ebp + 0xc]
push eax
push dword [esp + 0x28]
lea eax, [esp + 0x20]
push eax
call fcn.00437b10
add esp, 0x18
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x54], ecx
cmp eax, ecx
mov ebx, dword [esp + 4]
je 0x4375a0
mov dword [esp + 0x60], eax
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 8]
jmp 0x437856
push dword [esp + 4]
call fcn.00408950
add esp, 4
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x50]
lea eax, [ebx + edi*8]
mov dword [esp + 0x1c], eax
mov ecx, ebx
mov edi, dword [esp + 0x20]
add ecx, edi
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x68]
mov dword [ebx + edi], esi
mov dword [ebx + edi + 4], eax
add ecx, 8
mov eax, dword [esp + 0x6c]
add eax, 4
cmp eax, dword [esp + 0x54]
je 0x437a12
mov dword [esp + 8], ecx
mov dword [esp + 0x6c], eax
mov eax, dword [eax]
mov esi, dword [esp + 0x18]
mov ecx, esi
xor ecx, eax
not esi
and esi, eax
add esi, esi
sub esi, ecx
mov ecx, dword [esp + 8]
mov eax, esi
sar eax, 0x1f
add esi, edx
adc eax, dword [esp + 0x30]
mov edi, ecx
sub edi, ebx
cmp ecx, dword [esp + 0x1c]
jne 0x43783b
mov dword [esp + 4], ebx
mov dword [esp + 0x68], eax
mov dword [esp + 0x20], edi
mov ecx, edi
sar ecx, 3
lea eax, [ecx + 1]
mov edi, ecx
shr edi, 1
add edi, ecx
cmp edi, eax
ja 0x4378a9
mov edi, eax
mov eax, edi
and eax, 8
mov ecx, edi
or ecx, 8
imul ecx, eax
xor eax, 8
mov edx, edi
and edx, 0xfffffff7
imul edx, eax
add ecx, edx
push ecx
call fcn.00408940
add esp, 4
mov ebx, eax
mov eax, dword [esp + 4]
test eax, eax
je 0x437824
mov dword [esp + 0x1c], edi
mov ecx, dword [esp + 0x20]
lea edx, [ecx - 0x378ac0b0]
cmp ebx, eax
mov eax, dword [esp + 8]
mov dword [esp + 0x50], ebx
jbe 0x4379b2
cmp eax, ebx
jbe 0x4379b2
test ecx, ecx
je 0x437810
mov ebx, dword [esp + 4]
lea eax, [ebx + edx]
add eax, 0x378ac0af
mov ecx, dword [esp + 0x50]
add ecx, edx
add ecx, 0x378ac0af
mov edx, dword [esp + 0x20]
mov edi, edx
and edi, 7
je 0x437948
neg edi
xor edx, edx
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x437930
add eax, edx
add ecx, edx
add edx, dword [esp + 0x20]
mov ebx, dword [esp + 4]
mov edi, ebx
sub edi, dword [esp + 8]
cmp edi, 0xfffffff8
ja 0x437810
neg edx
xor edi, edi
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 0x437960
jmp 0x437810
shr ecx, 2
mov eax, dword [esp + 4]
mov edi, ebx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, dword [esp + 0x20]
and eax, 0xfffffffc
lea edi, [ebx + eax]
add eax, dword [esp + 4]
mov ecx, 0xc8753f4f
sub ecx, edx
or ecx, 3
add edx, ecx
add edx, 0x378ac0b1
mov ecx, edx
shr ecx, 1
mov dword [esp + 8], eax
mov dword [esp + 0x64], edi
mov ebx, dword [esp + 8]
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
test dl, 1
je 0x437810
and edx, 0xfffffffe
movzx eax, byte [eax + edx]
mov ecx, dword [esp + 0x64]
mov byte [ecx + edx], al
jmp 0x437810
mov eax, dword [ebp + 8]
mov dword [eax + 4], ecx
mov dword [eax], ebx
mov edx, dword [esp + 0x1c]
mov dword [eax + 8], edx
mov eax, dword [esp + 0x60]
test eax, eax
je 0x437a5a
mov dword [esp + 8], ecx
cmp eax, dword [esp + 0x54]
mov edi, dword [esp + 0x38]
je 0x437a51
mov dword [esp + 4], ebx
push eax
call fcn.00408950
add esp, 4
mov dword [esp + 0xc], 0
jmp 0x4375c0
mov dword [esp + 4], ebx
jmp 0x4375c0
mov dword [esp + 8], ecx
mov dword [esp + 4], ebx
mov edi, dword [esp + 0x38]
jmp 0x4375c0
mov dword [esp + 0xc], 0x585b5a45
mov byte [esp + 0x10], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xf
xor cl, byte [esp + eax + 0xc]
add cl, 0xb5
mov byte [esp + eax + 0xc], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 5
jb 0x437a80
mov eax, dword [0x44a598]
test eax, eax
je 0x437afa
mov ecx, dword [esp + 0xc]
xor edx, edx
mov esi, dword [0x44a59c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x16194952
je 0x437ad0
inc edx
cmp eax, edx
jne 0x437ac0
jmp 0x437afa
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x437afa
lea ecx, [esp + 0x3c]
lea edx, [esp + 0x18]
push 0x8000
push ecx
push edx
push 0xffffffffffffffff
push 0x10
push eax
push dword [0x44a5a0]
call fcn.004391b0
add esp, 0x1c
mov eax, dword [ebp + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10