Function at 0x4649b0
Capabilities:
Query environment variable

Disassembly:
push ebp
xor eax, eax
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x6c
cmp dword [ebp + 0x10], 0
mov dword [ebp - 0x1c], eax
jne 0x4649d0
mov dword [ebp - 0x34], 0x7f2bb747
jmp 0x4656bb
mov eax, dword [ebp + 0x10]
mov dword [esp], eax
call fcn.0045b976
test edx, edx
jne 0x4649e3
test eax, eax
je 0x4649c4
lea eax, [ebp - 0x24]
mov dword [esp], 0xc8
mov dword [esp + 4], eax
call fcn.00465a54
mov dword [ebp - 0x34], eax
test eax, eax
jne 0x4656bb
mov ebx, dword [ebp - 0x24]
mov ecx, 0x31
lea esi, [ebx + 4]
mov edi, esi
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx], 0x7f2bb701
mov dword [ebx + 0x5c], 0x12
or eax, 1
mov word [ebx + 0x68], 2
mov dword [ebx + 8], eax
mov dword [esp], 0x4b4dd4
call sub.msvcrt.dll_getenv
test eax, eax
je 0x464a51
xor edi, edi
mov dword [esp], eax
mov dword [esp + 8], edi
mov dword [esp + 4], edi
call sub.msvcrt.dll_strtoul
mov dword [ebx + 0x60], eax
mov eax, dword [ebp + 0xc]
and eax, 0x4000
cmp eax, 1
sbb eax, eax
and eax, 0xfffffffe
add eax, 3
bt dword [ebp + 0xc], 0x13
jae 0x464a6e
or eax, 4
or ah, 0x80
mov dword [esp + 8], esi
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [ebp + 0x14]
call dword [eax + 8]
test eax, eax
jne 0x46569f
mov eax, dword [ebx + 4]
mov dword [ebx + 0x88], eax
mov dword [eax + 0x5c], ebx
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
lea edx, [ebx + 0xc]
inc eax
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00465a54
test eax, eax
jne 0x46569f
mov eax, dword [ebp + 8]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0xc]
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
lea eax, [ebp - 0x20]
mov dword [esp], 0x400
mov dword [esp + 4], eax
call fcn.00465a54
mov dword [ebp - 0x34], eax
test eax, eax
jne 0x46569f
mov eax, dword [ebp - 0x20]
mov ecx, 0x100
mov dword [ebx + 0x10], eax
mov edi, eax
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x34]
mov esi, dword [ebp - 0x30]
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0x30]
mov edi, dword [ebp + 0x10]
mov dword [eax + 0x38], 0x1ef53
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x64]
mov edx, dword [edi + 0x18]
mov edi, eax
and edi, 0x200
mov dword [esi + 0x18], edx
mov dword [ebp - 0x60], edi
je 0x464b4b
mov edi, dword [ebp + 0x10]
mov ecx, dword [edi + 0x1c]
test ecx, ecx
jne 0x464b37
lea ecx, [edx + 4]
mov esi, dword [ebp - 0x30]
mov dword [esi + 0x1c], ecx
cmp ecx, edx
jae 0x464b51
mov eax, 0x7f2bb747
jmp 0x46569f
mov edi, dword [ebp - 0x30]
mov dword [edi + 0x1c], edx
mov esi, dword [ebp + 0x10]
mov edx, dword [esi + 0x14]
test edx, edx
jne 0x464b67
mov edi, dword [ebp - 0x30]
xor edx, edx
cmp dword [edi + 0x1c], 0
sete dl
mov ecx, dword [ebp - 0x30]
mov esi, dword [ebp + 0x10]
mov dword [ecx + 0x14], edx
mov dx, word [esi + 0x36]
mov edi, ecx
mov word [ecx + 0x36], dx
mov edx, dword [esi + 0x3c]
mov ecx, 1
mov esi, edi
test dx, dx
cmove edx, ecx
mov ecx, esi
mov word [edi + 0x3c], dx
mov edi, dword [ebp + 0x10]
mov edx, dword [edi + 0x5c]
mov dword [esi + 0x5c], edx
mov edx, dword [edi + 0x60]
mov esi, edi
mov edi, ecx
mov dword [ecx + 0x64], eax
mov dword [ecx + 0x60], edx
mov ecx, dword [esi + 0x100]
and edx, 0xfffc1921
mov dword [edi + 0x100], ecx
mov ecx, dword [esi + 0x104]
mov esi, edi
mov dword [edi + 0x104], ecx
mov edi, dword [ebp + 0x10]
mov ecx, dword [edi + 0x164]
mov word [esi + 0x164], cx
mov ecx, dword [edi + 0x170]
mov edi, dword [ebp + 0x10]
mov dword [esi + 0x170], ecx
mov ecx, dword [ebp + 0x10]
mov cl, byte [ecx + 0x174]
mov byte [esi + 0x174], cl
mov ecx, dword [edi + 0x160]
mov dword [esi + 0x160], ecx
mov ecx, dword [edi + 0x24c]
mov dword [esi + 0x24c], ecx
mov ecx, dword [ebp + 0x10]
mov ecx, dword [ecx + 0x250]
mov dword [esi + 0x250], ecx
mov edi, dword [ebp + 0x10]
mov ecx, dword [edi + 0x27c]
mov word [esi + 0x27c], cx
mov cx, word [edi + 0x27e]
mov word [esi + 0x27e], cx
jne 0x465685
test eax, 0xffff0884
jne 0x46568c
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x4c]
mov dword [esi + 0x4c], eax
test eax, eax
je 0x464cc5
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x54]
test eax, eax
jne 0x464c66
mov eax, 0xb
mov esi, dword [ebp - 0x30]
mov dword [esi + 0x54], eax
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x58]
test ax, ax
jne 0x464c7b
mov eax, esi
jmp 0x464ccf
mov edi, dword [ebp - 0x30]
mov word [edi + 0x58], ax
cmp ax, 0x9f
jbe 0x464cd5
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x15c]
test ax, ax
jne 0x464c9b
mov eax, 0x20
mov ecx, dword [ebp - 0x30]
mov word [ecx + 0x15c], ax
mov eax, dword [ebp + 0x10]
mov ax, word [eax + 0x15e]
test ax, ax
jne 0x464cb9
mov eax, 0x20
mov esi, dword [ebp - 0x30]
mov word [esi + 0x15e], ax
jmp 0x464cd5
mov eax, dword [ebp - 0x30]
mov dword [eax + 0x54], 0xb
mov word [eax + 0x58], pe_nt_image_headers32
mov eax, dword [ebp + 0x10]
mov edi, dword [ebp - 0x30]
mov eax, dword [eax + 0x44]
mov dword [edi + 0x44], eax
mov eax, dword [ebx + 0x60]
test eax, eax
jne 0x464cf3
xor ecx, ecx
mov dword [esp], ecx
call dword [sym.imp.msvcrt.dll_time]
mov ecx, dword [ebp - 0x30]
xor edx, edx
mov edi, 0x400
mov dword [ecx + 0x40], eax
mov dword [ecx + 0x108], eax
mov eax, dword [ecx + 0x18]
mov dword [ecx + 0x48], edx
mov ecx, eax
shl edi, cl
mov dword [ebp - 0x40], edi
mov dword [ebx + 0x14], edi
mov dword [ebx + 0x18], edi
mov edi, dword [ebp - 0x30]
mov edx, dword [edi + 0x1c]
mov ecx, edx
sub ecx, eax
mov eax, dword [ebp + 0x10]
cmp dword [ebp - 0x60], 0
mov dword [ebx + 0x64], ecx
mov edi, dword [eax + 0x20]
je 0x464dc8
mov esi, dword [eax + 0x24]
test edi, edi
je 0x464d65
test esi, esi
je 0x464d6b
mov eax, esi
xor edx, edx
shld edx, eax, cl
shl eax, cl
test cl, 0x20
je 0x464d53
mov edx, eax
xor eax, eax
test edx, edx
jne 0x464b41
cmp eax, edi
jne 0x464b41
jmp 0x464d98
test esi, esi
jne 0x464d98
jmp 0x464d7c
mov esi, edi
xor edi, edi
shrd esi, edi, cl
shr edi, cl
test cl, 0x20
cmovne esi, edi
jmp 0x464d98
mov eax, edx
add eax, 0xf
cmp eax, 0x1f
ja 0x464d8e
mov esi, dword [ebp - 0x40]
shl esi, 3
jmp 0x464d98
mov eax, dword [ebp - 0x40]
lea esi, [eax*8 - 8]
mov eax, 0xfff8
cmp esi, eax
cmova esi, eax
mov eax, dword [ebp - 0x30]
xor edi, edi
xor edx, edx
shld edi, esi, cl
mov dword [eax + 0x24], esi
shl esi, cl
and cl, 0x20
cmovne edi, esi
cmovne esi, edx
cmp edi, 0
ja 0x464b41
mov dword [eax + 0x20], esi
jmp 0x464df7
test edi, edi
jne 0x464dd6
mov eax, dword [ebp - 0x40]
lea edi, [eax*8]
mov ecx, edx
mov eax, 0x400
shl eax, cl
mov ecx, dword [ebp - 0x30]
cdq
idiv dword [ebp - 0x40]
imul eax, eax, 0xfff8
cmp eax, edi
cmova eax, edi
mov dword [ecx + 0x20], eax
mov dword [ecx + 0x24], eax
mov eax, dword [ebp + 0x10]
mov esi, 0xffffffff
mov edi, esi
mov dword [esp], eax
call fcn.0045b976
mov ecx, dword [ebx + 0x64]
shl esi, cl
test cl, 0x20
je 0x464e17
mov edi, esi
xor esi, esi
and esi, eax
mov eax, dword [ebp - 0x30]
and edi, edx
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp], eax
call fcn.0045ba36
mov eax, dword [ebp + 0x10]
mov dword [esp], eax
call fcn.0045ba7b
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x30]
mov dword [esp + 8], edx
mov dword [esp], eax
call fcn.0045baa6
mov eax, dword [ebp - 0x30]
mov dword [esp], eax
call fcn.0045ba7b
mov edi, eax
mov eax, dword [ebp + 0x10]
mov esi, edx
mov dword [esp], eax
call fcn.0045b976
cmp edi, eax
sbb esi, edx
jae 0x464b41
mov eax, dword [ebp + 0x10]
mov edi, dword [ebp - 0x30]
mov ax, word [eax + 0x166]
mov word [edi + 0x166], ax
test byte [edi + 0x60], 8
je 0x464fe4
xor esi, esi
or dword [ebx + 8], 6
mov dword [ebx + 0x1c], esi
jmp 0x46567e
mov eax, dword [ebp + 0x10]
mov dx, word [eax + 0xfe]
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x60]
mov esi, eax
mov dword [ebp - 0x40], eax
and esi, 0x80
setne al
test dx, dx
jne 0x464ec5
movzx edx, al
shl edx, 6
mov ecx, dword [ebp - 0x30]
mov word [ecx + 0xfe], dx
test dx, dx
je 0x465028
mov eax, dword [ebp - 0x30]
mov ecx, dword [eax + 0x18]
mov eax, 0x400
mov dword [esp], edi
mov edi, 1
shl eax, cl
test esi, esi
mov ecx, 0x20
cmove edx, ecx
movzx ecx, dx
cdq
idiv ecx
mov dword [esp + 4], eax
call fcn.00465cfe
mov ecx, dword [ebx + 0x14]
mov dword [ebx + 0x20], eax
cmp ecx, 0xfff
ja 0x464f1f
mov eax, 0x1000
xor edx, edx
div ecx
mov edi, eax
test esi, esi
je 0x465035
mov eax, dword [ebp - 0x30]
mov dword [esp], eax
call fcn.0045b976
xor ecx, ecx
mov dword [esp + 8], edi
mov dword [esp + 0xc], ecx
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00485080
test edx, edx
je 0x465035
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
test eax, eax
jne 0x464f5c
or eax, 0xffffffff
mov edx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x20]
mov dword [edx], eax
mov eax, dword [esi + 0x4c]
mov edx, dword [esi]
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
mov eax, 0xc
je 0x464f7b
mov eax, dword [esi + 0x54]
inc eax
cmp edx, eax
jae 0x464f81
mov dword [esi], eax
mov eax, dword [ebx + 0x1c]
mov dword [ebp - 0x50], eax
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
call fcn.00465cfe
mov edi, eax
mov eax, dword [ebx + 0x14]
shl eax, 3
cmp eax, edi
jae 0x46512f
cmp dword [ebp - 0x60], 0
jne 0x465125
mov eax, dword [esi + 0x20]
cmp eax, 0xff
jbe 0x465125
sub eax, 8
mov dword [esi + 0x20], eax
mov eax, dword [ebp + 0x10]
mov dword [esp], eax
call fcn.0045b976
mov dword [esp], esi
mov dword [esp + 4], eax
mov dword [esp + 8], edx
call fcn.0045ba36
mov eax, dword [esi + 0x20]
mov dword [esi + 0x24], eax
mov eax, dword [ebp - 0x30]
xor edi, edi
mov esi, dword [eax + 0x20]
mov dword [esp], eax
call fcn.0045b976
mov ecx, dword [ebp - 0x30]
mov dword [esp + 0xc], edi
mov dword [esp + 8], esi
sub eax, dword [ecx + 0x14]
sbb edx, 0
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00465d11
mov dword [ebx + 0x1c], eax
mov edi, eax
test eax, eax
jne 0x464e9c
mov eax, 0x7f2bb72c
jmp 0x46569f
test al, al
je 0x464ed8
jmp 0x465693
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
test eax, eax
jne 0x464f5c
mov eax, dword [ebp - 0x20]
xor esi, esi
mov dword [esp], eax
call fcn.0045b976
mov dword [esp + 8], edi
mov dword [esp + 0xc], esi
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00485080
jmp 0x464f5c
mov eax, dword [ebp - 0x40]
imul edi, eax
mov dword [esi + 0x28], eax
mov eax, dword [ebp - 0x5c]
add edi, eax
mov eax, dword [ebp - 0x50]
shr edi, cl
mov dword [ebx + 0x28], edi
mov edi, dword [ebp - 0x40]
imul eax, edi
mov dword [esi], eax
mov dword [esi + 0x10], eax
xor eax, eax
test byte [esi + 0x5c], 0x10
jne 0x4651ba
mov edi, dword [ebp + 0x10]
mov ecx, dword [esi + 0x18]
mov dx, word [edi + 0xce]
test dx, dx
cmove edx, eax
mov word [esi + 0xce], dx
movzx eax, dx
mov edx, 0x400
shl edx, cl
shr edx, 2
cmp edx, eax
jb 0x46569a
mov edi, dword [ebx + 0x20]
mov edx, dword [ebx + 0x10]
mov dword [ebp - 0x40], edi
mov edi, dword [esi + 0x20]
mov ecx, dword [ebp - 0x40]
add eax, ecx
lea ecx, [edi + edi*2]
shr ecx, 2
cmp ecx, eax
jae 0x4650f8
mov eax, dword [ebp + 0x10]
or dword [edx + 0x60], 0x10
and dword [edx + 0x5c], 0xffffffef
mov ax, word [eax + 0xce]
mov word [esi + 0xce], ax
mov eax, dword [ebx + 0x28]
movzx ecx, word [esi + 0xce]
mov dword [ebp - 0x48], eax
add ecx, eax
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x50], ecx
lea ecx, [eax + ecx + 3]
test byte [edx + 0x60], 0x10
je 0x46511d
mov ecx, dword [ebp - 0x50]
add ecx, 4
cmp edi, ecx
jae 0x46524e
mov eax, 0x7f2bb75b
jmp 0x46569f
mov eax, dword [esi + 0x18]
mov dword [ebp - 0x54], eax
mov cl, byte [ebp - 0x54]
mov eax, 0x400
shl eax, cl
cmp dword [ebp - 0x48], 0
mov ecx, pe_nt_image_headers32
mov dword [ebp - 0x38], eax
je 0x465151
movzx ecx, word [esi + 0x58]
mov eax, dword [ebp - 0x38]
cdq
idiv ecx
mov edx, 0x10000
sub edx, eax
mov eax, dword [ebp - 0x38]
cmp edx, edi
cmovbe edi, edx
dec eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], edi
cmp dword [ebp - 0x48], 0
mov edi, pe_nt_image_headers32
je 0x46517c
movzx edi, word [esi + 0x58]
mov eax, dword [ebp - 0x54]
mov edx, dword [ebp - 0x5c]
lea ecx, [eax + 0xa]
mov eax, dword [ebp - 0x58]
imul eax, edi
add eax, edx
mov edx, dword [ebp - 0x38]
shr eax, cl
imul eax, edx
xor edx, edx
div edi
mov edx, 8
cmp eax, edx
cmovb eax, edx
and eax, 0xfffffff8
mov dword [ebp - 0x40], eax
mul dword [ebp - 0x50]
cmp edx, 0
jbe 0x465068
dec dword [ebp - 0x58]
jmp 0x46516d
mov edi, dword [ebx + 0x10]
mov eax, dword [edi + 0x20]
mov ecx, dword [edi + 0x18]
mov dword [ebp - 0x40], eax
mov eax, 0x400
shl eax, cl
mov ecx, 0x20
test byte [edi + 0x60], 0x80
je 0x4651df
movzx ecx, word [edi + 0xfe]
cdq
mov dword [esp], edi
idiv ecx
mov dword [ebp - 0x48], eax
call fcn.0045b976
mov ecx, eax
mov eax, edx
mov edx, 0x3ffffe
cmp edx, ecx
mov edx, 0
sbb edx, eax
mov eax, 0xffffffff
jb 0x465211
mov dword [esp], edi
call fcn.0045b976
shl eax, 0xa
mov edx, dword [ebp - 0x40]
mov dword [esp + 4], edx
sub eax, dword [edi + 0x14]
mov dword [esp], eax
call fcn.00465cfe
mov ecx, dword [ebp - 0x48]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00465cfe
mov ecx, dword [edi + 0x18]
mov edx, eax
mov eax, 0x400
sub edx, dword [ebx + 0x20]
shl eax, cl
shr eax, 2
cmp eax, edx
cmova eax, edx
jmp 0x465095
mov edi, dword [ebp - 0x48]
mov eax, dword [ebx + 0x1c]
add edi, 2
test byte [esi + 0x5d], 2
je 0x46527d
cmp eax, 2
mov eax, dword [ebp + 0x10]
jne 0x46526e
cmp dword [eax + 0x24c], 0
jmp 0x465275
cmp dword [eax + 0x250], 0
setne al
movzx eax, al
jmp 0x46528a
dec eax
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.0045d3f3
test eax, eax
je 0x46529f
mov eax, dword [ebx + 0x20]
lea edx, [edi + eax + 1]
movzx eax, word [esi + 0xce]
lea edi, [eax + edx]
mov dword [esp], esi
call fcn.0045b976
mov ecx, dword [esi + 0x20]
sub eax, dword [esi + 0x14]
sbb edx, 0
mov dword [esp], eax
mov dword [esp + 8], ecx
xor ecx, ecx
mov dword [esp + 0xc], ecx
mov dword [esp + 4], edx
call fcn.004851a0
mov dword [ebp - 0x3c], edx
mov edx, dword [ebx + 0x1c]
mov dword [ebp - 0x40], eax
mov ecx, dword [ebp - 0x40]
cmp edx, 1
jne 0x4652e7
test ecx, ecx
je 0x465406
cmp ecx, edi
jb 0x46501e
test ecx, ecx
je 0x465406
lea eax, [edi + 0x32]
cmp ecx, eax
jae 0x465406
mov dword [esp], esi
call fcn.0045b976
sub eax, dword [ebp - 0x40]
sbb edx, dword [ebp - 0x3c]
mov dword [esp], esi
mov dword [esp + 4], eax
mov dword [esp + 8], edx
call fcn.0045ba36
mov eax, dword [ebp + 0x10]
mov dword [esp], eax
call fcn.0045ba7b
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], edx
fild qword [ebp - 0x40]
test edx, edx
jns 0x465336
fadd dword [0x4b4e0c]
mov eax, dword [ebp + 0x10]
fstp qword [ebp - 0x40]
fld qword [ebp - 0x40]
fmul dword [0x4b4e10]
mov dword [esp], eax
fstp qword [ebp - 0x40]
call fcn.0045b976
mov dword [ebp - 0x48], eax
test edx, edx
mov dword [ebp - 0x44], edx
fild qword [ebp - 0x48]
fld dword [0x4b4e10]
fstp qword [ebp - 0x48]
jns 0x46536c
fadd dword [0x4b4e0c]
fstp qword [ebp - 0x50]
fld qword [ebp - 0x50]
fdivr qword [ebp - 0x40]
mov dword [esp], esi
fstp qword [ebp - 0x40]
call fcn.0045b976
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], edx
fild qword [ebp - 0x50]
test edx, edx
jns 0x465393
fadd dword [0x4b4e0c]
fstp qword [ebp - 0x50]
fld qword [ebp - 0x50]
fmul qword [ebp - 0x40]
fdiv qword [ebp - 0x48]
fld dword [0x4b4e14]
fxch st(1)
fcomi st(1)
jae 0x4653cc
fstp st(1)
fnstcw word [ebp - 0x2a]
mov ax, word [ebp - 0x2a]
or ah, 0xc
mov word [ebp - 0x2c], ax
fldcw word [ebp - 0x2c]
fistp qword [ebp - 0x40]
fldcw word [ebp - 0x2a]
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x3c]
jmp 0x4653f1
fnstcw word [ebp - 0x2a]
fsubrp st(1)
mov ax, word [ebp - 0x2a]
or ah, 0xc
mov word [ebp - 0x2c], ax
fldcw word [ebp - 0x2c]
fistp qword [ebp - 0x40]
fldcw word [ebp - 0x2a]
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
add edx, 0x80000000
mov dword [esp + 4], eax
mov dword [esp + 8], edx
mov dword [esp], esi
call fcn.0045baa6
jmp 0x464fe4
test byte [esi + 0x5d], 2
je 0x465458
cmp dword [esi + 0x24c], edx
jb 0x46541d
lea eax, [edx - 1]
mov dword [esi + 0x24c], eax
cmp dword [esi + 0x250], edx
jb 0x46542c
dec edx
mov dword [esi + 0x250], edx
mov eax, dword [esi + 0x24c]
cmp eax, dword [esi + 0x250]
jne 0x465442
xor edx, edx
mov dword [esi + 0x250], edx
mov edx, dword [esi + 0x250]
cmp edx, eax
jae 0x465458
mov dword [esi + 0x24c], edx
mov dword [esi + 0x250], eax
mov eax, dword [ebx + 0xc]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
lea edx, [ebp - 0x1c]
add eax, 0x50
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00465a54
test eax, eax
jne 0x46569f
mov edi, dword [ebp - 0x1c]
mov dword [esp + 4], 0x4b4de8
mov dword [esp], edi
call sub.msvcrt.dll_strcpy
mov eax, dword [ebx + 0xc]
mov dword [esp], edi
mov dword [esp + 4], eax
call sub.msvcrt.dll_strcat
lea eax, [ebx + 0x30]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.0045b4ee
test eax, eax
jne 0x46569f
mov dword [esp + 4], 0x4b4dfa
mov dword [esp], edi
call sub.msvcrt.dll_strcpy
mov eax, dword [ebx + 0xc]
mov dword [esp], edi
mov dword [esp + 4], eax
call sub.msvcrt.dll_strcat
lea eax, [ebx + 0x2c]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.0045b310
test eax, eax
jne 0x46569f
mov eax, dword [ebp - 0x1c]
xor edi, edi
mov dword [esp], eax
call sub.msvcrt.dll_free
lea eax, [ebx + 0x24]
mov dword [ebp - 0x1c], edi
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x14]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x20]
mov dword [esp], eax
call fcn.00465aac
test eax, eax
jne 0x46569f
mov ecx, dword [ebx + 0x20]
imul ecx, dword [ebx + 0x14]
mov edi, dword [ebx + 0x24]
rep stosb byte es:[edi], al
xor ecx, ecx
xor edi, edi
mov dword [ebp - 0x40], ecx
mov eax, dword [ebx + 0x10]
mov dword [ebp - 0x3c], ecx
mov eax, dword [eax + 0x64]
and eax, 0x410
mov dword [ebp - 0x48], eax
mov eax, dword [esi + 0x54]
mov dword [ebp - 0x30], eax
mov eax, dword [ebx + 0x1c]
cmp edi, eax
jae 0x465633
cmp dword [ebp - 0x48], 0
je 0x4655bc
dec eax
cmp eax, edi
je 0x465579
mov dword [esp + 8], 2
mov dword [esp + 4], edi
mov dword [esp], ebx
call fcn.0045c12a
mov dword [esp + 8], 1
mov dword [esp + 4], edi
mov dword [esp], ebx
call fcn.0045c12a
cmp dword [ebp - 0x30], 0
mov eax, dword [esi + 0x28]
je 0x4655ac
cmp dword [ebp - 0x30], eax
jae 0x4655a7
mov edx, dword [ebp - 0x30]
sub eax, edx
xor edx, edx
mov dword [ebp - 0x30], edx
jmp 0x4655ac
sub dword [ebp - 0x30], eax
xor eax, eax
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov dword [esp], ebx
call fcn.0045c06f
mov eax, dword [ebx + 0x30]
mov dword [esp + 4], edi
mov dword [esp], ebx
mov dword [esp + 8], eax
call fcn.0046f984
mov edx, dword [ebx + 0x10]
cmp byte [edx + 0x174], 0
je 0x4655e2
mov edx, dword [ebx + 0x28]
lea eax, [eax + edx + 2]
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov dword [esp], ebx
add dword [ebp - 0x40], eax
adc dword [ebp - 0x3c], 0
call fcn.0045bee9
mov eax, dword [ebx + 0x10]
mov eax, dword [eax + 0x28]
mov dword [esp + 4], edi
mov dword [esp], ebx
mov dword [esp + 8], eax
call fcn.0045bf6b
xor eax, eax
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.0045bfed
mov dword [esp + 4], edi
inc edi
mov dword [esp], ebx
call fcn.0045eb5b
jmp 0x46554f
mov ecx, dword [ebx + 0x64]
mov eax, 0xffffffff
xor edi, edi
mov dword [esp], esi
mov edx, eax
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, edi
and edx, dword [ebp - 0x3c]
and eax, dword [ebp - 0x40]
mov dword [esp + 4], eax
mov dword [esp + 8], edx
call fcn.0045bb16
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 0x14]
or dword [esi + 0x160], 1
mov edx, dword [eax + 4]
or dword [ebx + 8], 0x36
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [edx + 0x10]
mov eax, dword [ebp + 0x18]
mov dword [eax], ebx
jmp 0x4656bb
mov eax, 0x7f2bb743
jmp 0x46569f
mov eax, 0x7f2bb744
jmp 0x46569f
mov eax, 0x7f2bb722
jmp 0x46569f
mov eax, 0x7f2bb75d
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x30], eax
mov dword [esp], edx
call sub.msvcrt.dll_free
mov dword [esp], ebx
call fcn.004622ee
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x34]
add esp, 0x6c
pop ebx
pop esi
pop edi
pop ebp
ret