Function at 0x403a00
Capabilities:
Query environment variable

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xac
mov edi, dword [esp + 0xc0]
mov ebx, dword [esp + 0xcc]
and edi, 0x3000
mov esi, dword [esp + 0xd0]
mov dword [esp + 0xc0], edi
mov dword [esp], str.PRINTF_EXPONENT_DIGITS
call sub.msvcrt.dll_getenv
test eax, eax
je 0x403b20
movsx eax, byte [eax]
sub eax, 0x30
cmp eax, 2
ja 0x403b20
mov edx, 2
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x54], 0xffffffff
mov dword [esp + 0x58], 0xffffffff
mov dword [esp + 0x5c], 0xfffffffd
mov word [esp + 0x60], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
or ch, 2
mov dl, byte [ebx]
mov dword [esp + 0x3c], ecx
movsx eax, dl
test eax, eax
je 0x403b50
lea edi, [ebx + 1]
cmp eax, 0x25
jne 0x403b37
mov eax, dword [esp + 0xc0]
lea ecx, [esp + 0x54]
mov dword [esp + 0x50], eax
mov dword [esp + 0x58], 0xffffffff
mov dword [esp + 0x54], 0xffffffff
xor ebp, ebp
mov dl, byte [ebx + 1]
mov dword [esp + 0x38], ecx
mov ebx, edi
xor ecx, ecx
test dl, dl
je 0x403ab0
movsx eax, dl
sub edx, 0x20
inc ebx
cmp dl, 0x5a
jbe 0x403b60
cmp eax, 0x39
jle 0x403bb0
lea edx, [esp + 0x4c]
mov eax, 0x25
call fcn.004026c0
mov ebx, edi
mov dl, byte [edi]
jmp 0x403ab0
call fcn.00406fd0
mov edx, 3
test al, 1
je 0x403a54
jmp 0x403a4f
lea edx, [esp + 0x4c]
call fcn.004026c0
mov dl, byte [ebx + 1]
movsx eax, dl
mov ebx, edi
test eax, eax
jne 0x403abb
mov eax, dword [esp + 0x64]
add esp, 0xac
pop ebx
pop esi
pop edi
pop ebp
ret
and edx, 0xff
jmp dword [edx*4 + 0x40989c]
mov eax, esi
mov dl, byte [ebx]
mov ebp, 2
mov ecx, 4
mov esi, eax
jmp 0x403aef
mov ebp, 2
cmp byte [ebx], 0x6c
jne case.0x403b66.44
inc ebx
mov bp, 3
mov edx, dword [esp + 0x50]
mov eax, esi
or edx, 4
mov ecx, 4
mov dword [esp + 0x50], edx
mov esi, eax
mov dl, byte [ebx]
jmp 0x403aef
cmp ecx, 3
ja 0x403b08
cmp eax, 0x2f
jle 0x403b08
test ecx, ecx
jne 0x404240
mov cl, 1
mov edx, dword [esp + 0x38]
test edx, edx
je 0x403bf7
mov edx, dword [esp + 0x38]
mov edx, dword [edx]
mov dword [esp + 0x2c], edx
test edx, edx
js 0x404340
mov edx, dword [esp + 0x2c]
lea edx, [edx + edx*4]
lea eax, [eax + edx*2 - 0x30]
mov edx, dword [esp + 0x38]
mov dword [edx], eax
mov eax, esi
mov dl, byte [ebx]
mov esi, eax
jmp 0x403aef
sub ebp, 2
cmp ebp, 1
jbe case.0x403b66.51
mov edi, dword [esi]
test edi, edi
je 0x404436
mov dword [esp], edi
call sub.msvcrt.dll_strlen
mov edx, eax
lea ecx, [esp + 0x4c]
mov eax, edi
call fcn.00402830
add esi, 4
mov dl, byte [ebx]
jmp 0x403ab0
test ecx, ecx
jne 0x403c4c
mov ecx, dword [esp + 0xc0]
cmp dword [esp + 0x50], ecx
je 0x40445c
lea eax, [esp + 0x4c]
mov edx, dword [esi]
xor ecx, ecx
mov dword [esp], eax
lea edi, [esi + 4]
mov eax, 0x78
mov dword [esp + 0x90], edx
mov dword [esp + 0x94], ecx
mov esi, edi
call fcn.00402b80
mov dl, byte [ebx]
jmp 0x403ab0
mov eax, esi
cmp ebp, 4
je 0x40436f
cmp ebp, 1
je 0x404311
cmp ebp, 2
je 0x403ca2
cmp ebp, 3
je 0x4044e2
mov eax, dword [eax]
mov edx, dword [esp + 0x64]
add esi, 4
mov dword [eax], edx
mov dl, byte [ebx]
jmp 0x403ab0
mov eax, esi
mov dl, byte [ebx]
mov ebp, 3
mov ecx, 4
mov esi, eax
jmp 0x403aef
mov dl, byte [ebx]
cmp dl, 0x68
je 0x4043a3
mov eax, esi
mov ebp, 1
mov ecx, 4
mov esi, eax
jmp 0x403aef
mov eax, dword [esp + 0x50]
mov edx, esi
or eax, 0x20
mov dword [esp + 0x50], eax
test al, 4
je 0x403fbe
mov eax, dword [edx]
mov ecx, dword [edx + 8]
mov edx, dword [edx + 4]
mov dword [esp], eax
lea eax, [esp + 0x4c]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
add esi, 0xc
call fcn.00403380
mov dl, byte [ebx]
jmp 0x403ab0
mov eax, dword [esp + 0x50]
mov edx, esi
or eax, 0x20
mov dword [esp + 0x50], eax
test al, 4
je 0x403fe4
mov eax, dword [edx]
mov ecx, dword [edx + 8]
mov edx, dword [edx + 4]
mov dword [esp], eax
lea eax, [esp + 0x4c]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
add esi, 0xc
call fcn.004032a0
mov dl, byte [ebx]
jmp 0x403ab0
mov eax, dword [esp + 0x50]
mov edx, esi
or eax, 0x20
mov dword [esp + 0x50], eax
test al, 4
je 0x40400e
mov eax, dword [edx]
mov ecx, dword [edx + 8]
mov edx, dword [edx + 4]
mov dword [esp], eax
lea eax, [esp + 0x4c]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
add esi, 0xc
call fcn.004031e0
mov dl, byte [ebx]
jmp 0x403ab0
sub ebp, 2
mov eax, esi
mov dword [esp + 0x58], 0xffffffff
cmp ebp, 1
jbe 0x404030
mov eax, dword [eax]
mov edx, 1
mov byte [esp + 0x90], al
lea ecx, [esp + 0x4c]
lea eax, [esp + 0x90]
add esi, 4
call fcn.00402830
mov dl, byte [ebx]
jmp 0x403ab0
mov ecx, dword [esp + 0x50]
mov eax, esi
or cl, 0x80
cmp ebp, 3
mov dword [esp + 0x50], ecx
je 0x4043b9
cmp ebp, 2
je 0x4042f4
mov eax, dword [eax]
add esi, 4
mov edx, eax
mov dword [esp + 0x90], eax
sar edx, 0x1f
cmp ebp, 1
mov dword [esp + 0x94], edx
je 0x404495
cmp ebp, 4
je 0x40451c
mov edx, dword [esp + 0x94]
lea ecx, [esp + 0x4c]
mov eax, dword [esp + 0x90]
call fcn.00402970
mov dl, byte [ebx]
jmp 0x403ab0
mov edx, dword [esp + 0x50]
mov eax, esi
or edx, 0x20
mov dword [esp + 0x50], edx
test dl, 4
je 0x40406f
fld xword [eax]
add esi, 0xc
fld st(0)
fstp xword [esp + 0x80]
fxam
wait
fnstsw ax
and eax, 0x4500
cmp eax, 0x100
je 0x4043f4
mov ecx, dword [esp + 0x88]
mov edi, ecx
and edi, 0x8000
jne 0x404250
fxam
wait
fnstsw ax
fstp st(0)
and eax, 0x4500
cmp eax, 0x500
je 0x404445
and ecx, 0x7fff
test cx, cx
mov word [esp + 0x88], cx
je 0x404260
sub ecx, 0x3fff
mov word [esp + 0x88], cx
lea eax, [esp + 0x4c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x80]
mov dword [esp], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xc], eax
call fcn.00403520
mov dl, byte [ebx]
jmp 0x403ab0
mov edx, esi
cmp ebp, 3
je 0x404354
cmp ebp, 2
je 0x404324
mov ecx, dword [edx]
add esi, 4
mov dword [esp + 0x90], ecx
mov dword [esp + 0x94], 0
cmp ebp, 1
je 0x404471
cmp ebp, 4
je 0x4044fc
cmp eax, 0x75
je 0x403e39
lea edx, [esp + 0x4c]
mov ecx, dword [esp + 0x94]
mov dword [esp], edx
mov edx, dword [esp + 0x90]
call fcn.00402b80
mov dl, byte [ebx]
jmp 0x403ab0
mov dl, byte [ebx]
cmp dl, 0x36
je 0x404381
cmp dl, 0x33
je 0x4042a9
mov eax, esi
mov ebp, 2
mov ecx, 4
mov esi, eax
jmp 0x403aef
mov eax, dword [esp + 0x50]
mov edx, esi
test al, 4
jne 0x403d05
fld qword [edx]
lea eax, [esp + 0x4c]
add esi, 8
fstp xword [esp]
call fcn.00403380
mov dl, byte [ebx]
jmp 0x403ab0
mov eax, dword [esp + 0x50]
mov edx, esi
test al, 4
jne 0x403d45
fld qword [edx]
lea eax, [esp + 0x4c]
add esi, 8
fstp xword [esp]
call fcn.004032a0
mov dl, byte [ebx]
jmp 0x403ab0
mov eax, dword [esp + 0x50]
mov edx, esi
test al, 4
jne 0x403d85
fld qword [edx]
lea eax, [esp + 0x4c]
add esi, 8
fstp xword [esp]
call fcn.004031e0
mov dl, byte [ebx]
jmp 0x403ab0
mov dword [esp + 0x58], 0xffffffff
mov eax, esi
mov eax, dword [eax]
mov edx, 1
mov word [esp + 0x9e], ax
lea ecx, [esp + 0x4c]
lea eax, [esp + 0x9e]
add esi, 4
call fcn.00402720
mov dl, byte [ebx]
jmp 0x403ab0
mov edx, dword [esp + 0x50]
mov eax, esi
test dl, 4
jne 0x403e6d
fld qword [eax]
add esi, 8
fst qword [esp + 0x70]
fxam
wait
fnstsw ax
and eax, 0x4500
cmp eax, 0x100
je 0x4043f8
mov bp, word [esp + 0x76]
mov edi, ebp
and edi, 0x8000
je 0x4040a3
or dl, 0x80
mov dword [esp + 0x50], edx
fstp qword [esp]
call fcn.004062a0
cmp eax, 0x500
je 0x404445
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x74]
shld edx, eax, 8
shl eax, 8
mov dword [esp + 0x74], edx
shr bp, 4
mov dword [esp + 0x70], eax
mov ax, word [esp + 0x76]
and ebp, 0x7ff
and eax, 0xfff
mov word [esp + 0x78], bp
test bp, bp
mov word [esp + 0x76], ax
jne 0x404412
mov eax, dword [esp + 0x74]
or eax, dword [esp + 0x70]
je 0x404105
mov word [esp + 0x78], 0xfc01
mov eax, dword [esp + 0x70]
lea edx, [esp + 0x4c]
mov dword [esp], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], eax
call fcn.00403520
mov dl, byte [ebx]
jmp 0x403ab0
test ecx, ecx
jne case.0x403b66.1
mov eax, dword [esp + 0x50]
or ah, 2
mov dword [esp + 0x50], eax
mov eax, esi
mov dl, byte [ebx]
mov esi, eax
jmp 0x403aef
cmp ecx, 1
jbe 0x4043d4
mov eax, esi
mov dl, byte [ebx]
mov ecx, 4
mov esi, eax
jmp 0x403aef
test ecx, ecx
jne 0x403bf7
mov eax, dword [esp + 0x50]
or ah, 4
mov dword [esp + 0x50], eax
mov eax, esi
mov dl, byte [ebx]
mov esi, eax
jmp 0x403aef
test ecx, ecx
jne 0x403bf7
mov edx, dword [esp + 0x50]
mov eax, esi
or dh, 1
mov esi, eax
mov dword [esp + 0x50], edx
mov dl, byte [ebx]
jmp 0x403aef
mov eax, dword [esp + 0x38]
test eax, eax
je 0x40415f
test ecx, ecx
sete byte [esp + 0x2c]
cmp ecx, 2
je 0x4042d0
cmp byte [esp + 0x2c], 0
jne 0x4042d0
mov eax, esi
mov dl, byte [ebx]
mov ecx, 4
mov dword [esp + 0x38], 0
mov esi, eax
jmp 0x403aef
lea edx, [esp + 0x4c]
call fcn.004026c0
mov dl, byte [ebx]
jmp 0x403ab0
test ecx, ecx
jne 0x403bf7
mov eax, dword [esp + 0x50]
or ah, 8
mov dword [esp + 0x50], eax
mov eax, esi
mov dl, byte [ebx]
mov esi, eax
jmp 0x403aef
test ecx, ecx
jne 0x403bf7
mov edx, dword [esp + 0x50]
mov eax, esi
or edx, 0x40
mov esi, eax
mov dword [esp + 0x50], edx
mov dl, byte [ebx]
jmp 0x403aef
cmp ecx, 2
jne 0x403bcc
mov cl, 3
jmp 0x403bcc
or dl, 0x80
mov dword [esp + 0x50], edx
jmp 0x403ea5
mov eax, dword [esp + 0x84]
or eax, dword [esp + 0x80]
je 0x403ee1
jmp 0x403ed3
mov edi, dword [esi]
test edi, edi
je 0x40453c
mov dword [esp], edi
call sub.msvcrt.dll_wcslen
lea ecx, [esp + 0x4c]
mov edx, eax
mov eax, edi
add esi, 4
call fcn.00402720
mov dl, byte [ebx]
jmp 0x403ab0
cmp byte [ebx + 1], 0x32
jne 0x403f9b
add ebx, 2
mov eax, esi
mov ebp, 2
mov ecx, 4
mov dl, byte [ebx]
mov esi, eax
jmp 0x403aef
mov edx, dword [esp + 0x38]
lea eax, [esi + 4]
mov esi, dword [esi]
mov dword [edx], esi
test esi, esi
js 0x4044b5
mov dl, byte [ebx]
mov esi, eax
mov dword [esp + 0x38], 0
jmp 0x403aef
mov eax, dword [eax]
add esi, 4
mov ecx, eax
mov dword [esp + 0x90], eax
sar ecx, 0x1f
mov dword [esp + 0x94], ecx
jmp 0x403e39
mov eax, dword [eax]
mov edx, dword [esp + 0x64]
add esi, 4
mov word [eax], dx
mov dl, byte [ebx]
jmp 0x403ab0
mov ecx, dword [edx]
add esi, 4
mov dword [esp + 0x90], ecx
mov dword [esp + 0x94], 0
jmp 0x403f5d
mov edx, dword [esp + 0x38]
sub eax, 0x30
mov dword [edx], eax
mov eax, esi
mov dl, byte [ebx]
mov esi, eax
jmp 0x403aef
mov ecx, dword [edx + 4]
mov edx, dword [edx]
add esi, 8
mov dword [esp + 0x90], edx
mov dword [esp + 0x94], ecx
jmp 0x403f5d
mov eax, dword [eax]
mov edx, dword [esp + 0x64]
add esi, 4
mov byte [eax], dl
mov dl, byte [ebx]
jmp 0x403ab0
cmp byte [ebx + 1], 0x34
jne 0x403f9b
add ebx, 2
mov eax, esi
mov ebp, 3
mov ecx, 4
mov dl, byte [ebx]
mov esi, eax
jmp 0x403aef
inc ebx
mov eax, esi
mov ebp, 4
mov ecx, 4
mov dl, byte [ebx]
mov esi, eax
jmp 0x403aef
mov edx, dword [eax + 4]
mov eax, dword [eax]
add esi, 8
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], edx
jmp 0x403e39
lea ecx, [esp + 0x58]
mov dword [esp + 0x58], 0
mov eax, esi
mov dl, byte [ebx]
mov esi, eax
mov dword [esp + 0x38], ecx
mov ecx, 2
jmp 0x403aef
fstp st(0)
jmp 0x4043fa
fstp st(0)
mov edx, 0x409891
lea ecx, [esp + 0x4c]
xor ax, ax
call fcn.004028e0
mov dl, byte [ebx]
jmp 0x403ab0
sub ebp, 0x3ff
cmp bp, 0xff83
mov word [esp + 0x78], bp
jl 0x404105
add eax, 0x1000
mov word [esp + 0x76], ax
jmp 0x404105
mov edx, 6
mov edi, str._null_
jmp 0x403c22
mov edx, 0x409895
lea ecx, [esp + 0x4c]
mov eax, edi
call fcn.004028e0
mov dl, byte [ebx]
jmp 0x403ab0
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x58], 8
mov dword [esp + 0x50], eax
jmp 0x403c4c
mov edx, dword [esp + 0x90]
mov dword [esp + 0x94], 0
and edx, 0xffff
mov dword [esp + 0x90], edx
jmp 0x403f5d
movsx eax, word [esp + 0x90]
mov ecx, eax
mov dword [esp + 0x90], eax
sar ecx, 0x1f
mov dword [esp + 0x94], ecx
jmp 0x403e39
cmp byte [esp + 0x2c], 0
je 0x404546
mov edx, dword [esp + 0x50]
xor ecx, ecx
neg dword [esp + 0x54]
or dh, 4
mov esi, eax
mov dword [esp + 0x50], edx
mov dl, byte [ebx]
mov dword [esp + 0x38], 0
jmp 0x403aef
mov edx, dword [esp + 0x64]
mov eax, dword [eax]
mov ecx, edx
add esi, 4
sar ecx, 0x1f
mov dword [eax], edx
mov dword [eax + 4], ecx
mov dl, byte [ebx]
jmp 0x403ab0
xor edx, edx
mov dword [esp + 0x94], 0
mov dl, byte [esp + 0x90]
mov dword [esp + 0x90], edx
jmp 0x403f5d
movsx eax, byte [esp + 0x90]
mov edx, eax
mov dword [esp + 0x90], eax
sar edx, 0x1f
mov dword [esp + 0x94], edx
jmp 0x403e39
mov edi, 0x40987c
jmp 0x40428a
mov dword [esp + 0x58], 0xffffffff
jmp 0x4042e3