Function at 0x425f40
Capabilities:
Query environment variable

Disassembly:
push ebp
push edi
push esi
push ebx
mov ebx, ecx
sub esp, 0xac
mov dword [esp], edx
mov dword [esp + 0x1c], eax
and eax, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], eax
call sub.msvcrt.dll_strlen
mov edi, eax
mov eax, dword [ebx]
mov dword [esp + 0x20], eax
test eax, eax
je 0x426363
mov dword [esp], eax
xor ebp, ebp
lea esi, [esp + 0x20]
call sub.msvcrt.dll_strlen
lea edi, [edi + eax + 2]
jmp 0x425fa5
mov dword [esp], eax
call sub.msvcrt.dll_strlen
lea edi, [edi + eax + 1]
cmp ebp, 0x1f
je 0x426200
add ebp, 1
mov eax, dword [ebx + ebp*4]
mov dword [esi + ebp*4], eax
test eax, eax
jne 0x425f90
mov eax, dword [esp + 0x14]
add edi, 1
xor esi, esi
cmp byte [eax], 0x7e
je 0x426175
mov eax, dword [esp + 0x18]
mov dword [esp], edi
test eax, eax
jne 0x426137
call sub.libgcrypt_20.dll_gcry_malloc
mov ebx, eax
test eax, eax
je 0x4263ae
mov eax, dword [esp + 0x14]
test esi, esi
je 0x42614a
movzx edx, byte [esi]
lea ecx, [eax + 1]
mov ebp, ebx
test dl, dl
je 0x426010
lea esi, [esi]
add esi, 1
add ebp, 1
mov byte [ebp - 1], dl
movzx edx, byte [esi]
test dl, dl
jne 0x426000
mov eax, dword [esp + 0x14]
mov byte [ebp], 0
movzx edx, byte [eax + 1]
test dl, dl
je 0x426030
add ecx, 1
add ebp, 1
mov byte [ebp - 1], dl
movzx edx, byte [ecx]
test dl, dl
jne 0x426020
mov byte [ebp], 0
xor edi, edi
lea esi, [esp + 0x20]
mov dword [esp], 0
call sub.libgcrypt_20.dll_gcry_free
mov edx, dword [esp + 0x20]
test edx, edx
je 0x42609e
nop
test edi, edi
jne 0x426063
cmp byte [ebx], 0x2f
jne 0x426063
cmp byte [ebx + 1], 0
je 0x426119
mov eax, 0x2f
add ebp, 1
mov word [ebp - 1], ax
movzx eax, byte [edx]
test al, al
je 0x426090
lea esi, [esi]
lea esi, [esi]
add edx, 1
add ebp, 1
mov byte [ebp - 1], al
movzx eax, byte [edx]
test al, al
jne 0x426080
add edi, 1
mov byte [ebp], 0
mov edx, dword [esi + edi*4]
test edx, edx
jne 0x426050
test byte [esp + 0x1c], 2
je 0x4260cd
mov dword [esp + 4], 0x3a
mov dword [esp], ebx
call sub.msvcrt.dll_strchr
lea ebp, [eax + 1]
test eax, eax
cmove ebp, ebx
movzx eax, byte [ebp]
cmp al, 0x2f
je 0x4260cd
cmp al, 0x5c
jne 0x426227
mov dword [esp + 4], 0x5c
mov dword [esp], ebx
call sub.msvcrt.dll_strchr
test eax, eax
je 0x426103
movzx edx, byte [ebx]
test dl, dl
je 0x426103
mov eax, ebx
lea esi, [esi]
cmp dl, 0x2f
je 0x4261e0
add eax, 1
movzx edx, byte [eax]
test dl, dl
jne 0x4260f0
add esp, 0xac
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
add ebp, 1
mov byte [ebp - 1], al
add edx, 1
movzx eax, byte [edx]
test al, al
jne 0x426110
add edi, 1
mov byte [ebp], 0
mov edx, dword [esi + edi*4]
test edx, edx
jne 0x426050
jmp 0x42609e
call sub.libgcrypt_20.dll_gcry_xmalloc
mov ebx, eax
mov eax, dword [esp + 0x14]
test esi, esi
jne 0x425fee
movzx edx, byte [eax]
mov ebp, ebx
test dl, dl
je 0x426030
lea esi, [esi]
nop
add eax, 1
add ebp, 1
mov byte [ebp - 1], dl
movzx edx, byte [eax]
test dl, dl
jne 0x426160
jmp 0x426030
movzx eax, byte [eax + 1]
cmp al, 0x2f
je 0x426321
test al, al
je 0x426321
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
add eax, 1
test edx, edx
mov dword [esp], eax
je 0x42634f
call sub.libgcrypt_20.dll_gcry_xstrdup
mov ebx, eax
mov dword [esp + 4], 0x2f
mov dword [esp], ebx
call sub.msvcrt.dll_strchr
test eax, eax
je 0x4261bd
mov byte [eax], 0
mov dword [esp], ebx
xor esi, esi
call sub.libgcrypt_20.dll_gcry_free
mov eax, dword [esp + 0x18]
mov dword [esp], edi
test eax, eax
je 0x425fd3
jmp 0x426137
mov byte [eax], 0x5c
add eax, 1
movzx edx, byte [eax]
test dl, dl
jne 0x4260f0
add esp, 0xac
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, dword [esp + 0x18]
test ecx, ecx
jne 0x4263c9
mov dword [esp], 0x16
xor ebx, ebx
call sub.libgpg_error_0.dll_gpg_err_set_errno
add esp, 0xac
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
call fcn.00430470
mov edi, eax
test eax, eax
je 0x426379
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov dword [esp], ebx
mov esi, eax
call sub.msvcrt.dll_strlen
mov edx, dword [esp + 0x18]
lea eax, [esi + eax + 2]
test edx, edx
mov dword [esp], eax
jne 0x42636b
call sub.libgcrypt_20.dll_gcry_malloc
mov dword [esp + 0x14], eax
test eax, eax
je 0x4263bf
mov eax, dword [esp + 0x14]
mov esi, eax
cmp ebx, ebp
je 0x426291
mov esi, ebp
mov dword [esp + 4], ebp
mov ebp, eax
sub esi, ebx
mov dword [esp], eax
add esi, 1
mov dword [esp + 8], esi
add esi, ebp
call sub.msvcrt.dll_memcpy
movzx edx, byte [edi]
lea eax, [esi + 1]
mov ecx, eax
cmp dl, 0x2f
je 0x426390
mov ebp, esi
test dl, dl
je 0x4262c7
mov ecx, edi
jmp 0x4262b5
mov esi, eax
add eax, 1
add ecx, 1
mov byte [eax - 1], dl
mov ebp, eax
movzx edx, byte [ecx]
test dl, dl
jne 0x4262b0
lea ecx, [esi + 2]
mov eax, 0x2f
mov word [ebp], ax
mov dword [esp + 4], ebx
mov dword [esp], ecx
call sub.msvcrt.dll_strcpy
mov dword [esp], edi
call sub.libgcrypt_20.dll_gcry_free
mov dword [esp], ebx
call sub.libgcrypt_20.dll_gcry_free
mov ebx, dword [esp + 0x14]
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
cmp eax, 2
jbe 0x4260cd
lea edx, [ebx + eax - 2]
cmp byte [edx], 0x2f
jne 0x4260cd
cmp byte [ebx + eax - 1], 0x2e
jne 0x4260cd
mov byte [edx], 0
jmp 0x4260cd
mov dword [esp], str.HOME
call sub.msvcrt.dll_getenv
mov esi, eax
test eax, eax
je 0x425fc4
cmp byte [eax], 0
je 0x425fc4
mov dword [esp], eax
call sub.msvcrt.dll_strlen
add edi, eax
jmp 0x425fc4
call sub.libgcrypt_20.dll_gcry_strdup
mov ebx, eax
test eax, eax
jne 0x4261a6
jmp 0x426103
add edi, 1
jmp 0x425fb2
call sub.libgcrypt_20.dll_gcry_xmalloc
mov dword [esp + 0x14], eax
jmp 0x42626c
mov ecx, dword [esp + 0x18]
test ecx, ecx
jne 0x4263e5
mov dword [esp], ebx
xor ebx, ebx
call sub.libgcrypt_20.dll_gcry_free
jmp 0x426103
cmp byte [edi + 1], 0
jne 0x4262a8
mov byte [esi], 0x2f
mov dword [esp + 4], ebx
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
jmp 0x4262dc
mov dword [esp], 0
call sub.libgcrypt_20.dll_gcry_free
jmp 0x426103
mov dword [esp], edi
call sub.libgcrypt_20.dll_gcry_free
jmp 0x426381
mov dword [esp + 8], str.do_make_filename
mov dword [esp + 4], 0x1b0
mov dword [esp], str._home_wk_b_gnupg_2.2_dist_PLAY_release_gnupg_w32_2.2.19_common_stringhelp.c
call fcn.0042e010
call dword [sym.imp.msvcrt.dll__errno]
mov eax, dword [eax]
mov dword [esp], eax
call sub.msvcrt.dll_strerror
mov dword [esp], 2
mov ebx, eax
call dword [0x44a5a4]
mov dword [esp + 8], ebx
mov dword [esp + 4], str._nfatal:_getcwd_failed:__s_n
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call sub.msvcrt.dll_exit
lea esi, [esi]
lea esi, [esi]
nop
push ebp
push edi
mov edi, ecx
push esi
mov esi, eax
push ebx
sub esp, 0x2c
movsx eax, byte [eax]
mov dword [esp + 0x14], edx
test al, al
je 0x426640
xor ebx, ebx
xor ebp, ebp
test edx, edx
je 0x426610
lea esi, [esi]
lea esi, [esi]
cmp al, 0x3a
sete cl
cmp al, 0x25
sete dl
or cl, dl
jne 0x426490
cmp al, 0xa
je 0x426490
mov dword [esp + 4], eax
mov eax, dword [esp + 0x14]
mov dword [esp], eax
call sub.msvcrt.dll_strchr
test eax, eax
je 0x426493
lea esi, [esi]
lea esi, [esi]
add ebp, 1
add ebx, 1
movsx eax, byte [esi + ebx]
test al, al
jne 0x426460
lea eax, [ebx + ebp*2 + 1]
mov dword [esp], eax
test edi, edi
je 0x4265f0
call sub.libgcrypt_20.dll_gcry_xmalloc
movzx edx, byte [esi]
mov edi, eax
test dl, dl
je 0x426606
xor ebx, ebx
jmp 0x426562
cmp dl, 0x25
je 0x4265a4
cmp dl, 0xa
je 0x4265c0
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4265e0
movsx eax, dl
mov dword [esp + 0x1c], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x14]
mov byte [esp + 0x1b], dl
mov dword [esp], eax
call sub.msvcrt.dll_strchr
movzx edx, byte [esp + 0x1b]
mov ecx, dword [esp + 0x1c]
test eax, eax
je 0x4265e0
mov ecx, edx
lea eax, [edi + ebx]
shr cl, 4
mov byte [eax], 0x25
lea eax, [ecx + 0x30]
cmp cl, 9
mov byte [esp + 0x10], al
lea eax, [ecx + 0x57]
movzx ecx, byte [esp + 0x10]
cmovbe eax, ecx
and edx, 0xf
lea ecx, [ebx + 2]
cmp dl, 9
mov byte [ebp], al
lea ebp, [edx + 0x30]
lea eax, [edx + 0x57]
cmovle eax, ebp
add ebx, 3
lea ebp, [edi + ebx]
mov byte [edi + ecx], al
add esi, 1
movzx edx, byte [esi]
test dl, dl
je 0x426596
lea eax, [edi + ebx]
lea ecx, [ebx + 1]
mov dword [esp + 0x10], eax
lea ebp, [edi + ecx]
cmp dl, 0x3a
jne 0x4264d0
mov byte [eax], 0x25
add esi, 1
lea eax, [ebx + 2]
add ebx, 3
mov byte [ebp], 0x33
lea ebp, [edi + ebx]
mov byte [edi + eax], 0x61
movzx edx, byte [esi]
test dl, dl
jne 0x426562
mov byte [ebp], 0
add esp, 0x2c
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret
lea eax, [edi + ebx]
mov byte [eax], 0x25
lea eax, [ebx + 2]
add ebx, 3
mov byte [ebp], 0x32
lea ebp, [edi + ebx]
mov byte [edi + eax], 0x35
jmp 0x426558
lea eax, [edi + ebx]
mov byte [eax], 0x25
lea eax, [ebx + 2]
add ebx, 3
mov byte [ebp], 0x30
lea ebp, [edi + ebx]
mov byte [edi + eax], 0x61
jmp 0x426558
mov eax, dword [esp + 0x10]
mov ebx, ecx
mov byte [eax], dl
jmp 0x426558
call sub.libgcrypt_20.dll_gcry_malloc
mov edi, eax
test eax, eax
je 0x42659a
movzx edx, byte [esi]
test dl, dl
jne 0x4264bf
mov ebp, edi
jmp 0x426596
mov ebp, edx
mov ebx, edx
cmp al, 0x25
sete cl
cmp al, 0x3a
sete dl
or cl, dl
jne 0x426626
cmp al, 0xa
jne 0x426629
add ebp, 1
add ebx, 1
movzx eax, byte [esi + ebx]
test al, al
jne 0x426614
jmp 0x42649e
mov eax, 1
jmp 0x4264a2