Function at 0x6c5955
Capabilities:
Check if file exists
Copy file
Create directory
Delete file
Get common file path
Get installed programs
Get startup folder
Persist via lnk shortcut
Query or enumerate registry value
Set registry value
Write file to startup folder

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x6d1535
mov eax, dword fs:[0]
push eax
sub esp, 0xf68
mov eax, dword [0x6ded78]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov eax, dword [ebp + 0x14]
lea edx, [ebp - 0xc50]
push edx
xor edi, edi
push 0x20119
push edi
mov dword [ebp - 0xc48], edi
push str.SoftwareConexant
xor ecx, ecx
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0xc60], eax
mov word [eax], cx
mov dword [ebp - 4], edi
lea esi, [edi + 1]
mov dword [ebp - 0xc64], 0xff
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x6c53aa
mov edx, dword [ebp - 0xc50]
lea eax, [ebp - 0xc5c]
push eax
lea ecx, [ebp - 0xc64]
push ecx
push edi
push edi
push str.SetCOMMBranding
push edx
mov dword [ebp - 0xc5c], 4
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x6c5395
mov eax, dword [ebp - 0xc64]
cmp eax, dword [ebp + 0xc]
jne 0x6c5395
xor esi, esi
mov ecx, dword [ebp - 0xc50]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp esi, edi
je 0x6c70a4
call fcn.006c2ed0
cmp eax, 1
jne 0x6c70a4
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov edx, dword [str.SAConfig.HP.Slice.xml]
mov eax, dword [0x6d842c]
mov dword [ebp - 0x320], edx
mov edx, dword [0x6d8434]
mov ecx, 6
mov esi, str.SAConfig.BandO.Slice.xml
lea edi, [ebp - 0x62c]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0x6d8430]
mov dword [ebp - 0x314], edx
lea edx, [ebp - 0xc50]
push edx
push 0x20119
push 0
mov dword [ebp - 0x31c], eax
mov eax, dword [0x6d8438]
mov dword [ebp - 0x318], ecx
mov cx, word [0x6d843c]
push str.SOFTWAREConexantSA3
push reloc.OLEAUT32.dll_SysReAllocString
movsb byte es:[edi], byte [esi]
mov dword [ebp - 0x310], eax
mov word [ebp - 0x30c], cx
xor bl, bl
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x6c54c0
mov edx, dword [ebp - 0xc50]
mov dword [ebp - 0xc58], eax
lea eax, [ebp - 0xc5c]
push eax
lea ecx, [ebp - 0xc58]
push ecx
push 0
push 0
push str.FeatureByteBrandingStatus
push edx
mov dword [ebp - 0xc5c], 4
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x6c54ab
cmp dword [ebp - 0xc58], eax
je 0x6c54ab
mov ecx, 7
mov esi, str.SAConfig.BandO.FeatureByte.xml
lea edi, [ebp - 0x62c]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov ecx, 7
mov esi, str.SAConfig.HP.FeatureByte.xml
lea edi, [ebp - 0x320]
rep movsd dword es:[edi], dword [esi]
mov bl, 1
mov eax, dword [ebp - 0xc50]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test bl, bl
jne 0x6c5556
lea ecx, [ebp - 0xc50]
push ecx
push 0x20119
push 0
push str.SOFTWAREConexantSA3HP_NB_AIO
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x6c5556
mov ecx, dword [ebp - 0xc50]
lea edx, [ebp - 0xc5c]
push edx
mov dword [ebp - 0xc58], eax
lea eax, [ebp - 0xc58]
push eax
push 0
push 0
push str.FeatureByteBrandingStatus
push ecx
mov dword [ebp - 0xc5c], 4
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x6c5549
cmp dword [ebp - 0xc58], eax
je 0x6c5549
mov ecx, 7
mov esi, str.SAConfig.BandO.FeatureByte.xml
lea edi, [ebp - 0x62c]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov ecx, 7
mov esi, str.SAConfig.HP.FeatureByte.xml
lea edi, [ebp - 0x320]
rep movsd dword es:[edi], dword [esi]
mov edx, dword [ebp - 0xc50]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp + 0xc]
cmp eax, 4
ja case.default.0x6c5562
jmp dword [eax*4 + 0x6c70cc]
mov eax, dword [str.BandOPlay.ico]
mov ecx, 8
mov esi, str.Bang__Olufsen_Audio_Control_Panel
lea edi, [ebp - 0x424]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0x6d8370]
mov edx, dword [0x6d8374]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xe6c], ecx
movzx ecx, byte [0x6d8347]
movsb byte es:[edi], byte [esi]
mov byte [ebp - 0x528], cl
mov ecx, 9
mov esi, str.Bang__Olufsen_Audio_Control_Panel.lnk
lea edi, [ebp - 0xf74]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0x6d8314]
mov dword [ebp - 0xe70], eax
movzx eax, word [0x6d8378]
mov dword [ebp - 0xe68], edx
mov edx, dword [str.Audio_Controls.lnk]
mov word [ebp - 0xe64], ax
mov eax, dword [0x6d8310]
mov dword [ebp - 0xd64], ecx
movzx ecx, byte [0x6d831e]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xd6c], edx
mov edx, dword [0x6d8318]
mov dword [ebp - 0xd68], eax
movzx eax, word [0x6d831c]
mov dword [ebp - 0xd60], edx
mov byte [ebp - 0xd5a], cl
movsb byte es:[edi], byte [esi]
mov word [ebp - 0xd5c], ax
lea ecx, [ebp - 0x62c]
lea edx, [ebp - 0x834]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5627
lea ecx, [ebp - 0x320]
lea edx, [ebp - 0x938]
lea ecx, [ecx]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5640
jmp case.default.0x6c5562
mov cl, byte [0x6d8308]
mov byte [ebp - 0x41c], cl
mov ecx, dword [0x6d8374]
mov edx, dword [str.BO_Play]
mov dword [ebp - 0xe68], ecx
mov eax, dword [0x6d8304]
mov ecx, 7
mov esi, str.BO_Play_Control_Audio_Panel
lea edi, [ebp - 0x528]
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov ecx, 9
mov esi, str.Bang__Olufsen_Audio_Control_Panel.lnk
lea edi, [ebp - 0xf74]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0x6d8310]
mov dword [ebp - 0x424], edx
mov edx, dword [str.BandOPlay.ico]
mov dword [ebp - 0xe70], edx
mov dx, word [0x6d8378]
mov dword [ebp - 0x420], eax
mov eax, dword [0x6d8370]
mov word [ebp - 0xe64], dx
mov edx, dword [0x6d8314]
mov dword [ebp - 0xe6c], eax
mov eax, dword [str.Audio_Controls.lnk]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xd68], ecx
mov cx, word [0x6d831c]
mov dword [ebp - 0xd64], edx
mov dl, byte [0x6d831e]
mov dword [ebp - 0xd6c], eax
mov eax, dword [0x6d8318]
mov word [ebp - 0xd5c], cx
mov byte [ebp - 0xd5a], dl
movsb byte es:[edi], byte [esi]
mov dword [ebp - 0xd60], eax
lea ecx, [ebp - 0x62c]
lea edx, [ebp - 0x834]
nop
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5720
lea ecx, [ebp - 0x320]
lea edx, [ebp - 0x938]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5736
jmp case.default.0x6c5562
mov eax, dword [str.BandOPlay.ico]
mov ecx, 8
mov esi, str.Bang__Olufsen_Audio_Control_Panel
lea edi, [ebp - 0x424]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0x6d8370]
mov edx, dword [0x6d8374]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xe6c], ecx
movzx ecx, byte [0x6d8347]
movsb byte es:[edi], byte [esi]
mov byte [ebp - 0x528], cl
mov ecx, 9
mov esi, str.Bang__Olufsen_Audio_Control_Panel.lnk
lea edi, [ebp - 0xf74]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0x6d8314]
mov dword [ebp - 0xe70], eax
movzx eax, word [0x6d8378]
mov dword [ebp - 0xe68], edx
mov edx, dword [str.Audio_Controls.lnk]
mov word [ebp - 0xe64], ax
mov eax, dword [0x6d8310]
mov dword [ebp - 0xd64], ecx
movzx ecx, byte [0x6d831e]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xd6c], edx
mov edx, dword [0x6d8318]
mov dword [ebp - 0xd68], eax
movzx eax, word [0x6d831c]
mov dword [ebp - 0xd60], edx
mov byte [ebp - 0xd5a], cl
movsb byte es:[edi], byte [esi]
mov word [ebp - 0xd5c], ax
lea ecx, [ebp - 0x62c]
lea edx, [ebp - 0x834]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5803
lea ecx, [ebp - 0x320]
lea edx, [ebp - 0x938]
lea esp, [esp]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5820
jmp case.default.0x6c5562
mov ecx, dword [0x6d82cc]
mov esi, dword [0x6d82d4]
mov edi, dword [0x6d82d8]
mov edx, dword [0x6d82d0]
mov ebx, dword [0x6d82dc]
mov eax, dword [str.DTS_Audio_Control_Panel]
mov dword [ebp - 0x420], ecx
mov dword [ebp - 0x524], ecx
mov ecx, dword [0x6d8310]
mov dword [ebp - 0xf70], ecx
mov cx, word [0x6d831c]
mov dword [ebp - 0x418], esi
mov dword [ebp - 0x414], edi
mov dword [ebp - 0x51c], esi
mov dword [ebp - 0x518], edi
mov word [ebp - 0xf64], cx
mov ecx, 9
mov esi, str.Bang__Olufsen_Audio_Control_Panel.lnk
lea edi, [ebp - 0xd6c]
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x41c], edx
mov dword [ebp - 0x520], edx
mov edx, dword [0x6d82dc]
mov dword [ebp - 0x410], ebx
mov ebx, dword [str.HPAudio.ico]
mov dword [ebp - 0x514], edx
mov edx, dword [0x6d8314]
mov dword [ebp - 0x424], eax
mov dword [ebp - 0xe70], ebx
mov ebx, dword [0x6d82c0]
mov dword [ebp - 0x528], eax
mov eax, dword [str.Audio_Controls.lnk]
mov dword [ebp - 0xf6c], edx
mov dl, byte [0x6d831e]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xe6c], ebx
mov ebx, dword [0x6d82c4]
mov dword [ebp - 0xf74], eax
mov eax, dword [0x6d8318]
mov byte [ebp - 0xf62], dl
mov dword [ebp - 0xe68], ebx
mov dword [ebp - 0xf68], eax
movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x320]
lea edx, [ebp - 0x834]
lea ecx, [ecx]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5930
lea ecx, [ebp - 0x62c]
lea edx, [ebp - 0x938]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5946
jmp case.default.0x6c5562
mov ecx, dword [0x6d82b0]
mov eax, dword [str.Audio_Controls]
mov dword [ebp - 0x420], ecx
movzx ecx, byte [0x6d82ba]
mov edx, dword [0x6d82b4]
mov byte [ebp - 0x416], cl
mov ecx, dword [0x6d82c4]
mov dword [ebp - 0xe68], ecx
mov ecx, dword [0x6d829c]
mov dword [ebp - 0x520], ecx
movzx ecx, byte [0x6d82a8]
mov byte [ebp - 0x514], cl
mov ecx, dword [0x6d8314]
mov dword [ebp - 0xf6c], ecx
movzx ecx, byte [0x6d831e]
mov dword [ebp - 0x424], eax
movzx eax, word [0x6d82b8]
mov byte [ebp - 0xf62], cl
mov dword [ebp - 0x41c], edx
mov edx, dword [str.HPAudio.ico]
mov word [ebp - 0x418], ax
mov eax, dword [0x6d82c0]
mov ecx, 9
mov esi, str.Bang__Olufsen_Audio_Control_Panel.lnk
lea edi, [ebp - 0xd6c]
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0xe70], edx
mov edx, dword [str.Audio_Controls_Panel]
mov dword [ebp - 0xe6c], eax
mov eax, dword [0x6d8298]
mov dword [ebp - 0x528], edx
mov edx, dword [0x6d82a0]
mov dword [ebp - 0x524], eax
mov eax, dword [0x6d82a4]
mov dword [ebp - 0x51c], edx
mov edx, dword [str.Audio_Controls.lnk]
mov dword [ebp - 0x518], eax
mov eax, dword [0x6d8310]
mov dword [ebp - 0xf74], edx
mov edx, dword [0x6d8318]
mov dword [ebp - 0xf70], eax
movzx eax, word [0x6d831c]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xf68], edx
mov word [ebp - 0xf64], ax
movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x320]
lea edx, [ebp - 0x834]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5a68
lea ecx, [ebp - 0x62c]
lea edx, [ebp - 0x938]
mov edi, edi
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5a80
mov eax, dword [ebp - 0xc60]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
lea ecx, [ebp - 0xc50]
push ecx
push 0x20119
push 0
push str.SoftwareMicrosoftWindowsCurrentVersion
or edx, 0xffffffff
push reloc.OLEAUT32.dll_SysReAllocString
mov word [eax], dx
call ebx
test eax, eax
jne 0x6c709f
mov ecx, dword [ebp - 0xc50]
lea edx, [ebp - 0xc5c]
push edx
lea eax, [ebp - 0xa3c]
push eax
push 0
push 0
push str.ProgramFilesDir
push ecx
mov dword [ebp - 0xc5c], 0x104
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x6c709f
lea ecx, [ebp - 0xa3c]
lea edx, [ebp - 0x62c]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5b00
lea edi, [ebp - 0x62c]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x6c5b11
lea edx, [ebp - 0xb40]
push edx
push 0
push 0
push 0x17
mov ecx, 7
mov esi, str.CONEXANTSA3HP_NB_AIOUX_
push 0
rep movsd dword es:[edi], dword [esi]
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
lea ecx, [ebp - 0xb40]
lea edx, [ebp - 0x320]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5b46
lea edi, [ebp - 0x320]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x6c5b57
mov ax, word [0x6d7ebc]
mov word [edi], ax
lea ecx, [ebp - 0xb40]
lea edx, [ebp - 0x730]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5b74
lea edi, [ebp - 0x730]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x6c5b85
mov ecx, 6
mov esi, str.Music__Photos_and_Videos_
rep movsd dword es:[edi], dword [esi]
lea ecx, [ebp - 0xc50]
push ecx
push 0x20106
push 0
movsw word es:[edi], word [esi]
push str.CLSIDD3CD8822_6943_4214_90EE_12F40BEA126F
push SysReAllocString
movsb byte es:[edi], byte [esi]
call ebx
test eax, eax
jne 0x6c5c24
lea eax, [ebp - 0x424]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x6c5bc3
mov ebx, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
sub eax, edx
push eax
mov eax, dword [ebp - 0xc50]
lea edx, [ebp - 0x424]
push edx
push 1
push 0
push 0
push eax
call ebx
lea eax, [ebp - 0x528]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x6c5bf2
sub eax, edx
mov edx, dword [ebp - 0xc50]
push eax
lea ecx, [ebp - 0x528]
push ecx
push 1
push 0
push str.InfoTip
push edx
call ebx
mov eax, dword [ebp - 0xc50]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x6c5c2a
mov ebx, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
lea ecx, [ebp - 0xc50]
push ecx
push 0x20106
push 0
push str.CLSIDD3CD8822_6943_4214_90EE_12F40BEA126FDefaultIcon
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x6c5cd0
lea ecx, [ebp - 0x62c]
lea edx, [ebp - 0x21c]
lea esp, [esp]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5c60
lea eax, [ebp - 0xe70]
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x6c5c72
lea edi, [ebp - 0x21c]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x6c5c82
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
lea eax, [ebp - 0x21c]
rep movsb byte es:[edi], byte [esi]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x6c5ca3
sub eax, edx
push eax
mov eax, dword [ebp - 0xc50]
lea edx, [ebp - 0x21c]
push edx
push 1
push 0
push 0
push eax
call ebx
mov ecx, dword [ebp - 0xc50]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea edx, [ebp - 0xc50]
push edx
push 0x20106
push 0
push str.SoftwareMicrosoftWindowsCurrentVersionUninstallCNXT_AUDIO_HDA
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x6c5d75
lea ecx, [ebp - 0x62c]
lea edx, [ebp - 0x21c]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5d02
lea eax, [ebp - 0xe70]
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x6c5d14
lea edi, [ebp - 0x21c]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x6c5d24
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
lea eax, [ebp - 0x21c]
rep movsb byte es:[edi], byte [esi]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x6c5d45
mov ecx, dword [ebp - 0xc50]
sub eax, edx
push eax
lea eax, [ebp - 0x21c]
push eax
push 1
push 0
push str.DisplayIcon
push ecx
call ebx
mov edx, dword [ebp - 0xc50]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ebx, dword [ebp + 0x10]
lea ecx, [ebp - 0x730]
test ebx, ebx
jne 0x6c5d88
lea ecx, [ebp - 0x320]
lea edx, [ebp - 0xc44]
mov edi, edi
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x6c5d90
lea eax, [ebp - 0xd6c]
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x6c5da2
lea edi, [ebp - 0xc44]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x6c5db2
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [ebp - 0xc44]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x6c656c
test ebx, ebx
je 0x6c5f0f
mov edx, dword [0x6ded5c]
mov eax, dword [edx + 0xc]
mov ecx, 0x6ded5c
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0xc4c], edi
lea ecx, [ebp - 0x730]
mov byte [ebp - 4], 1
push 0
test ecx, 0xffff0000
jne 0x6c5e42
mov edx, ecx
movzx esi, dx
push esi
call fcn.006c2d20
add esp, 8
test eax, eax
je 0x6c5ef9
push esi
push eax
lea ecx, [ebp - 0xc4c]
call fcn.006c45a0
mov edi, dword [ebp - 0xc4c]
jmp 0x6c5ef9
mov ebx, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0
push 0xffffffffffffffff
lea eax, [ebp - 0x730]
push eax
push 0
push 3
call ebx
lea esi, [eax - 1]
test esi, esi
jle 0x6c5ea4
mov eax, dword [edi - 8]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, esi
or eax, ecx
jge 0x6c5e83
push esi
lea ecx, [ebp - 0xc4c]
call fcn.006c3420
mov edi, dword [ebp - 0xc4c]
push esi
push edi
push 0xffffffffffffffff
lea ecx, [ebp - 0x730]
push ecx
push 0
push 3
call ebx
cmp esi, dword [edi - 8]
jg 0x6c5ebf
xor edx, edx
mov dword [edi - 0xc], esi
mov word [edi + esi*2], dx
jmp 0x6c5ef9
cmp dword [edi - 0xc], 0
mov esi, dword [edi - 0x10]
lea eax, [edi - 0x10]
je 0x6c5ef9
cmp dword [eax + 0xc], 0
lea ecx, [eax + 0xc]
jge 0x6c5ed7
cmp dword [edi - 8], 0
jge 0x6c5ec9
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x6c5eed
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [esi]
mov eax, dword [edx + 0xc]
mov ecx, esi
call eax
lea edi, [eax + 0x10]
mov edi, dword [ebp - 0xc4c]