Function at 0x401ee0
Capabilities:
Contain obfuscated stackstrings
Enumerate files on windows
Get file size
Read file on windows

Disassembly:
mov eax, 0x96580
call fcn.004039b0
mov dl, byte [0x405f54]
push ebx
push ebp
push esi
push edi
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x41]
mov byte [esp + 0x40], dl
mov byte [esp + 0x590], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x257ff
xor eax, eax
lea edi, [esp + 0x591]
mov byte [esp + 0x284], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov al, 0xf6
mov ecx, 0x40
mov byte [esp + 0x16], al
mov byte [esp + 0x1e], al
xor eax, eax
lea edi, [esp + 0x285]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x48d]
mov byte [esp + 0x48c], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor ebx, ebx
xor ebp, ebp
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x389]
mov byte [esp + 0x388], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov dword [esp + 0x10], ebp
mov dword [esp + 0x38], ebx
mov byte [esp + 0x14], 0x23
mov byte [esp + 0x15], 0x45
mov byte [esp + 0x17], 0x34
mov byte [esp + 0x18], 0xb4
mov byte [esp + 0x19], 0xa2
mov byte [esp + 0x1a], 0x89
mov byte [esp + 0x1b], 0xcc
mov byte [esp + 0x1c], 0x56
mov byte [esp + 0x1d], 0x32
mov byte [esp + 0x1f], 0xaa
mov byte [esp + 0x20], 0x43
mov byte [esp + 0x21], 0x21
mov byte [esp + 0x22], 0x98
mov byte [esp + 0x23], 0x3d
mov byte [esp + 0x24], bl
mov byte [esp + 0x25], 1
mov byte [esp + 0x26], 2
mov byte [esp + 0x27], 3
mov byte [esp + 0x28], 4
mov byte [esp + 0x29], 5
mov byte [esp + 0x2a], 6
mov byte [esp + 0x2b], 7
mov byte [esp + 0x2c], 8
mov byte [esp + 0x2d], 9
mov byte [esp + 0x2e], 0xa
mov byte [esp + 0x2f], 0xb
mov byte [esp + 0x30], 0xc
mov byte [esp + 0x31], 0xd
mov byte [esp + 0x32], 0xe
mov byte [esp + 0x33], 0xf
stosb byte es:[edi], al
mov dword [esp + 0x34], ebx
mov ecx, 0x19000
xor eax, eax
mov edi, 0x405f78
rep stosd dword es:[edi], eax
mov ecx, 0x95
mov edi, 0x49bf78
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [0x40501c]
push 0x104
cmp eax, ebx
je 0x4023b1
lea eax, [esp + 0x288]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [esp + 0x284]
push 0x5c
push ecx
call sub.MSVCRT.dll__mbsrchr
mov byte [eax], bl
lea edi, [esp + 0x28c]
or ecx, 0xffffffff
xor eax, eax
add esp, 8
lea edx, [esp + 0x48c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x284]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x405564
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x144]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x288]
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
mov dword [esp + 0x3c], eax
je 0x4022c8
lea edx, [esp + 0x144]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
je 0x4022a1
mov esi, 0x405560
lea eax, [esp + 0x170]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x402137
cmp cl, bl
je 0x402133
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x402137
add eax, 2
add esi, 2
cmp cl, bl
jne 0x402113
xor eax, eax
jmp 0x40213c
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x402275
mov esi, 0x40555c
lea eax, [esp + 0x170]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x402174
cmp cl, bl
je 0x402170
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x402174
add eax, 2
add esi, 2
cmp cl, bl
jne 0x402150
xor eax, eax
jmp 0x402179
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x402275
lea edi, [esp + 0x170]
or ecx, 0xffffffff
xor eax, eax
mov esi, 0x405550
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + ecx + 0x168]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4021c2
cmp cl, bl
je 0x4021be
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4021c2
add eax, 2
add esi, 2
cmp cl, bl
jne 0x40219e
xor eax, eax
jmp 0x4021c7
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x402275
cmp dword [esp + 0x96594], ebx
jne 0x40223d
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x388]
push 0x49cb74
rep stosd dword es:[edi], eax
lea eax, [esp + 0x38c]
push str._s.datakey
push eax
call sub.MSVCRT.dll_sprintf
add esp, 0xc
lea esi, [esp + 0x388]
lea eax, [esp + 0x170]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x402234
cmp cl, bl
je 0x402230
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x402234
add eax, 2
add esi, 2
cmp cl, bl
jne 0x402210
xor eax, eax
jmp 0x402239
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x402275
mov ebp, dword [esp + 0x34]
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x40]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x170]
lea ecx, [esp + 0x48c]
push eax
push ecx
lea edx, [esp + 0x48]
inc ebp
push str._s_s
push edx
mov dword [esp + 0x44], ebp
call sub.MSVCRT.dll_sprintf
add esp, 0x10
mov ecx, dword [esp + 0x3c]
lea eax, [esp + 0x144]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x402107
mov eax, dword [esp + 0x34]
cmp eax, 1
jae 0x402384
mov ebp, dword [esp + 0x10]
mov eax, dword [esp + 0x96594]
cmp eax, ebx
mov eax, dword [0x405020]
je 0x4022d5
cmp eax, ebx
mov eax, 0x40551c
jne 0x4022bf
mov eax, str.The._datakey_file_is_not_found_in_the_current_directory_
push eax
call fcn.004018f0
add esp, 4
pop edi
mov eax, ebp
pop esi
pop ebp
pop ebx
add esp, 0x96580
ret
cmp eax, ebx
mov eax, 0x4054b4
jne 0x4022e3
mov eax, str.The_current_data_file__.datakey__has_been_changed__please_reload_
push eax
call fcn.004018f0
mov edx, dword [0x405f70]
mov esi, dword [sym.imp.USER32.dll_GetDlgItem]
add esp, 4
push ebx
push 0x3ef
push edx
call esi
mov edi, dword [sym.imp.USER32.dll_ShowWindow]
push eax
call edi
mov eax, dword [0x405f70]
push ebx
push 0x3fa
push eax
call esi
push eax
call edi
mov ecx, dword [0x405f70]
push ebx
push 0x285a
push ecx
call esi
push eax
call edi
mov edx, dword [0x405f70]
push ebx
push 0x3ec
push edx
call esi
push eax
call edi
mov eax, dword [0x405f70]
push 1
push 0x2864
push eax
call esi
push eax
call edi
mov ecx, dword [0x405f70]
push 1
push 0x2862
push ecx
call esi
push eax
call edi
mov edx, dword [0x405f70]
push 1
push 0x2863
push edx
call esi
push eax
call edi
pop edi
mov eax, ebp
pop esi
pop ebp
pop ebx
add esp, 0x96580
ret
jbe 0x4023c8
mov eax, dword [0x405020]
cmp eax, ebx
mov eax, 0x405444
jne 0x402399
mov eax, str.There_are_multiple_.datakey_files_in_the_current_directory__please_select_manually_
push eax
call fcn.004018f0
mov eax, dword [esp + 0x14]
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x96580
ret
mov ecx, dword [0x405f70]
lea eax, [esp + 0x44]
push eax
push 0x2862
push ecx
call dword [sym.imp.USER32.dll_GetDlgItemTextA]
cmp dword [esp + 0x96594], ebx
je 0x402414
mov ecx, 0x32
xor eax, eax
mov edi, 0x49cb74
lea edx, [esp + 0x40]
push 0x5c
push edx
rep stosd dword es:[edi], eax
call sub.MSVCRT.dll_strrchr
mov edx, eax
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
add esp, 8
lea esi, [edx + 1]
repne scasb al, byte es:[edi]
not ecx
add ecx, 0xfffffff6
mov edi, 0x49cb74
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push ebx
push 0x80
push 3
push ebx
push 3
lea ecx, [esp + 0x54]
push 0xc0000000
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebp, eax
cmp ebp, 0xffffffff
jne 0x402490
mov eax, dword [0x40501c]
cmp eax, ebx
mov eax, dword [0x405020]
je 0x40246a
cmp eax, ebx
mov eax, 0x40551c
jne 0x402452
mov eax, str.The_.datakey_file_is_not_found_in_the_current_directory_
push eax
call fcn.004018f0
mov eax, dword [esp + 0x14]
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x96580
ret
cmp eax, ebx
mov eax, 0x40539c
jne 0x402478
mov eax, str.Failed_to_open_.datakey_file_
push eax
call fcn.004018f0
mov eax, dword [esp + 0x14]
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x96580
ret
lea edx, [esp + 0x40]
push 0x5c
push edx
call sub.MSVCRT.dll_strrchr
mov edx, eax
mov ecx, 0x32
xor eax, eax
mov edi, 0x49caac
rep stosd dword es:[edi], eax
mov edi, edx
or ecx, 0xffffffff
add esp, 8
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 9
jae 0x4024f0
mov eax, dword [0x405020]
cmp eax, ebx
mov eax, 0x405368
jne 0x4024d1
mov eax, str.Failed_to_extract_data_file_name_
push eax
call fcn.004018f0
add esp, 4
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x96580
ret
mov edi, edx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 0x32
jbe 0x402514
lea esi, [edx + 1]
mov ecx, 0xc
mov edi, 0x49caac
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x402538
mov edi, edx
or ecx, 0xffffffff
xor eax, eax
lea esi, [edx + 1]
repne scasb al, byte es:[edi]
not ecx
add ecx, 0xfffffff6
mov edi, 0x49caac
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push ebx
push ebp
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp eax, 0x96000
jbe 0x402579
mov eax, dword [0x405020]
cmp eax, ebx
mov eax, 0x405334
jne 0x40255a
mov eax, str.Invalid_data_file_
push eax
call fcn.004018f0
add esp, 4
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x96580
ret
lea ecx, [esp + 0x38]
push ebx
push ecx
lea edx, [esp + 0x598]
push 0x96000
push edx
push ebp
call dword [sym.imp.KERNEL32.dll_ReadFile]
cmp dword [esp + 0x38], 0x96000
je 0x4025cf
mov eax, dword [0x405020]
cmp eax, ebx
mov eax, 0x40530c
jne 0x4025b0
mov eax, str.Failed_to_read_data_file_
push eax
call fcn.004018f0
add esp, 4
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x96580
ret
lea eax, [esp + 0x24]
lea ecx, [esp + 0x14]
push eax
push ecx
lea edx, [esp + 0x598]
push 0x96000
push edx
push 0x405f78
call fcn.00401810
add esp, 0x14
mov esi, str.DISL
mov eax, 0x49bf74
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x402621
cmp cl, bl
je 0x40261d
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x402621
add eax, 2
add esi, 2
cmp cl, bl
jne 0x4025fd
xor eax, eax
jmp 0x402626
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
mov eax, dword [0x405020]
je 0x40265c
cmp eax, ebx
mov eax, 0x4052d4
jne 0x40263d
mov eax, str.Data_file_decryption_failed_
push eax
call fcn.004018f0
add esp, 4
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x96580
ret
cmp eax, ebx
mov eax, 0x4052a0
jne 0x40266a
mov eax, str.The_data_file_was_decrypted_successfully_
push eax
call fcn.004018f0
mov ecx, 0x95
mov esi, 0x405f78
mov edi, 0x49bf78
xor eax, eax
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov ecx, 0x41
lea edi, [esp + 0x594]
rep stosd dword es:[edi], eax
mov al, byte [0x4061c5]
add esp, 4
cmp al, bl
mov dword [0x49caa8], ebx
je 0x402702
mov cl, byte [0x4061c6]
cmp cl, bl
je 0x402702
cmp al, 0x71
jne 0x4026cb
push 0x49cb74
lea eax, [esp + 0x594]
push str.CH9575R_UpdTool__s.bin
push eax
jmp 0x402868
cmp al, 0x73
push 0x49cb74
jne 0x4026de
push str.CH9576R_UpdTool__s.bin
jmp 0x402860
xor edx, edx
mov dl, al
xor eax, eax
mov al, cl
push edx
push eax
lea ecx, [esp + 0x59c]
push str.CH_02x_02x_UpdTool__s.bin
push ecx
call sub.MSVCRT.dll_sprintf
add esp, 0x14
jmp 0x402870
mov al, byte [0x405f7d]
cmp al, bl
jne 0x402722
push 0x49cb74
lea edx, [esp + 0x594]
push str.CH55X_UpdTool__s.bin
push edx
jmp 0x402868
cmp al, 1
jne 0x40273d
push 0x49cb74
lea eax, [esp + 0x594]
push str.CH56X_UpdTool__s.bin
push eax
jmp 0x402868
cmp al, 2
jne 0x402750
push 0x49cb74
push str.CH54X_UpdTool__s.bin
jmp 0x402860
cmp al, 3
jne 0x40276b
push 0x49cb74
lea edx, [esp + 0x594]
push str.CH57X_UpdTool__s.bin
push edx
jmp 0x402868
cmp al, 4
jne 0x402790
push 0x49cb74
lea eax, [esp + 0x594]
push str.CH32F10X_UpdTool__s.bin
mov dword [0x49caa8], 1
push eax
jmp 0x402868
cmp al, 5
jne 0x4027ad
push 0x49cb74
mov dword [0x49caa8], 1
push str.CH32V10X_UpdTool__s.bin
jmp 0x402860
cmp al, 6
jne 0x4027c8
push 0x49cb74
lea edx, [esp + 0x594]
push str.CH58X_UpdTool__s.bin
push edx
jmp 0x402868
cmp al, 7
jne 0x4027ea
push 0x49cb74
lea eax, [esp + 0x594]
push str.CH32V30X_UpdTool__s.bin
mov dword [0x49caa8], 1
push eax
jmp 0x402868
cmp al, 8
jne 0x402804
push 0x49cb74
mov dword [0x49caa8], 1
push str.CH32F20X_UpdTool__s.bin
jmp 0x402860
cmp al, 9
jne 0x402826
push 0x49cb74
lea edx, [esp + 0x594]
push str.CH32V20X_UpdTool__s.bin
mov dword [0x49caa8], 1
push edx
jmp 0x402868
cmp al, 0xa
jne 0x402848
push 0x49cb74
lea eax, [esp + 0x594]
push str.CH32F20X_UpdTool__s.bin
mov dword [0x49caa8], 1
push eax
jmp 0x402868
cmp al, 0xb
jne 0x402870
push 0x49cb74
mov dword [0x49caa8], 1
push str.CH32V00X_UpdTool__s.bin
lea ecx, [esp + 0x598]
push ecx
call sub.MSVCRT.dll_sprintf
add esp, 0xc
mov eax, dword [0x405f70]
lea edx, [esp + 0x590]
push edx
push eax
call dword [sym.imp.USER32.dll_SetWindowTextA]
push ebp
mov dword [esp + 0x14], 1
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x96580
ret