Function at 0x405350
Capabilities:
Get file size
Read file via mapping
Write file on windows

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x11ffc
call fcn.00439140
push ebx
push esi
push edi
xor esi, esi
mov byte [ebp - 0xc], 0
push esi
push esi
push 3
push esi
push 1
push 0x80000000
mov ebx, edx
mov dword [ebp - 0x1c], 0
mov edi, ecx
mov dword [ebp - 0x10], ebx
push 0x463c60
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x14], esi
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x24], eax
test eax, eax
je 0x4058dc
cmp eax, 0xffffffff
je 0x4058dc
push esi
push esi
push esi
push 2
push esi
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileMappingA]
mov dword [ebp - 0x48], eax
test eax, eax
je 0x4058c9
cmp eax, 0xffffffff
je 0x4058c9
push esi
push esi
push esi
push 4
push eax
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
mov dword [ebp - 8], eax
test eax, eax
je 0x4058c0
lea eax, [ebp - 0x40]
push eax
push dword [ebp - 0x24]
call dword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
je 0x4058b6
cmp dword [ebp - 0x3c], esi
jne 0x4058b6
mov eax, dword [ebp - 0x40]
test eax, eax
jle 0x4058b6
mov edi, dword [ebp - 8]
mov ebx, edi
add edi, eax
mov edx, ebx
mov dword [ebp - 0x44], edi
cmp edx, edi
jae 0x405a6b
lea eax, [ebp - 0x11ff8]
mov dword [ebp - 0x20], eax
mov cl, byte [ebx]
test cl, cl
je 0x4058b0
mov esi, edi
sub esi, ebx
cmp esi, 4
jle 0x4057e9
mov ecx, ebx
mov edx, str...._
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x40544e
add ecx, 4
xor eax, eax
jmp 0x405473
cmp al, byte [edx]
jne 0x40546e
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x40546e
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x40546e
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x40546e
xor eax, eax
jmp 0x405473
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4057e7
push 0x2a8
push eax
lea eax, [ebp - 0x3b0]
push eax
call fcn.0043b3c0
add esp, 0xc
add ebx, 4
xor ecx, ecx
cmp ebx, edi
jae 0x4054bb
mov al, byte [ebx]
cmp al, 0xa
je 0x4054bb
cmp al, 0xd
je 0x4054bb
cmp al, 0x7e
je 0x4054bb
cbw
inc ebx
mov word [ebp + ecx*2 - 0x3b0], ax
inc ecx
cmp ecx, 0x103
jl 0x405495
cmp byte [ebx], 0x7e
mov esi, dword [ebp - 0x18]
mov byte [ebp - 2], 0
jne 0x40559a
test esi, esi
sete byte [ebp - 2]
inc ebx
xor edx, edx
mov al, byte [ebx]
cmp al, 0x30
jl 0x4054e6
cmp al, 0x39
jg 0x4054e6
movsx eax, al
sub eax, 0x30
jmp 0x4054f8
cmp al, 0x41
jl 0x4054f6
cmp al, 0x46
jg 0x4054f6
movsx eax, al
sub eax, 0x37
jmp 0x4054f8
xor eax, eax
mov cl, byte [ebx + 1]
cmp cl, 0x30
jl 0x40550d
cmp cl, 0x39
jg 0x40550d
movsx ecx, cl
sub ecx, 0x30
jmp 0x405521
cmp cl, 0x41
jl 0x40551f
cmp cl, 0x46
jg 0x40551f
movsx ecx, cl
sub ecx, 0x37
jmp 0x405521
xor ecx, ecx
shl al, 4
add ebx, 2
or al, cl
mov byte [ebp + edx - 0x122], al
inc edx
cmp edx, 0x14
jb 0x4054d4
xor edx, edx
mov al, byte [ebx]
cmp al, 0x30
jl 0x40554a
cmp al, 0x39
jg 0x40554a
movsx eax, al
sub eax, 0x30
jmp 0x40555c
cmp al, 0x41
jl 0x40555a
cmp al, 0x46
jg 0x40555a
movsx eax, al
sub eax, 0x37
jmp 0x40555c
xor eax, eax
mov cl, byte [ebx + 1]
cmp cl, 0x30
jl 0x405571
cmp cl, 0x39
jg 0x405571
movsx ecx, cl
sub ecx, 0x30
jmp 0x405585
cmp cl, 0x41
jl 0x405583
cmp cl, 0x46
jg 0x405583
movsx ecx, cl
sub ecx, 0x37
jmp 0x405585
xor ecx, ecx
shl al, 4
add ebx, 2
or al, cl
mov byte [ebp + edx - 0x10c], al
inc edx
cmp edx, 4
jb 0x405538
lea eax, [ebp - 0x3b4]
push eax
lea edx, [ebp - 0x3ca]
lea ecx, [ebp - 0x3b0]
call fcn.00404f00
add esp, 4
mov byte [ebp - 0x124], al
test al, al
jne 0x4055e1
mov edi, dword [ebp - 0x10]
mov byte [ebp - 0xc], 1
test edi, edi
je 0x405745
lea eax, [ebp - 0x3b0]
push 1
push eax
call edi
add esp, 8
jmp 0x405745
cmp byte [ebp - 2], 0
je 0x405644
lea ecx, [ebp - 0x3ca]
mov esi, 0x10
lea edx, [ebp - 0x122]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x40561b
add ecx, 4
add edx, 4
sub esi, 4
jae 0x4055f8
mov eax, dword [ebp - 0x3b4]
cmp eax, dword [ebp - 0x10c]
je 0x405745
mov edi, dword [ebp - 0x10]
mov byte [ebp - 0x123], 1
mov byte [ebp - 0xc], 1
test edi, edi
je 0x405745
lea eax, [ebp - 0x3b0]
push 2
push eax
call edi
add esp, 8
jmp 0x405745
test esi, esi
je 0x40571f
xorps xmm0, xmm0
mov dword [ebp - 0x34], 0xaac56b
movups xmmword [ebp - 0x58], xmm0
lea eax, [ebp - 0x3b0]
mov dword [ebp - 0x58], 0x10
push 0x30
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x88]
push 0
push eax
mov dword [ebp - 0x30], 0x11d0cd44
mov dword [ebp - 0x2c], 0xc000c28c
mov dword [ebp - 0x28], 0xee95c24f
call fcn.0043b3c0
add esp, 0xc
mov dword [ebp - 0x88], 0x30
lea eax, [ebp - 0x58]
mov dword [ebp - 0x7c], 2
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x88]
mov dword [ebp - 0x78], 0
push eax
lea eax, [ebp - 0x34]
mov dword [ebp - 0x74], 1
push eax
push 0
mov dword [ebp - 0x6c], 1
call dword [0x475cf4]
test eax, eax
mov dword [ebp - 0x6c], 2
lea eax, [ebp - 0x88]
push eax
lea eax, [ebp - 0x34]
sete byte [ebp - 2]
push eax
push 0
call dword [0x475cf4]
mov ecx, dword [ebp - 0xc]
mov esi, 1
cmp byte [ebp - 2], 0
movzx eax, cl
lea ecx, [ebp - 0x3b0]
cmove eax, esi
mov dword [ebp - 0xc], eax
call fcn.004050a0
mov ecx, dword [ebp - 0xc]
test al, al
movzx ecx, cl
cmove ecx, esi
mov dword [ebp - 0xc], ecx
movups xmm0, xmmword [ebp - 0x3ca]
mov eax, dword [ebp - 0x3ba]
mov dword [ebp - 0x112], eax
mov eax, dword [ebp - 0x3b4]
movups xmmword [ebp - 0x122], xmm0
mov dword [ebp - 0x10c], eax
lea eax, [ebp - 0x3b0]
push 0x5c
push eax
call fcn.00439be3
mov esi, eax
add esp, 8
test esi, esi
je 0x405761
add esi, 2
jmp 0x405767
lea esi, [ebp - 0x3b0]
push 0x2e
push esi
call fcn.004398c5
mov edx, eax
add esp, 8
test edx, edx
jne 0x405792
mov ecx, esi
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x405780
sub ecx, edx
sar ecx, 1
lea edx, [esi + ecx*2]
sub edx, esi
xor ecx, ecx
sar edx, 1
test edx, edx
jle 0x4057bc
lea eax, [ebp - 0x1a4]
sub esi, eax
lea eax, [esi + ecx*2]
mov ax, word [ebp + eax - 0x1a4]
mov word [ebp + ecx*2 - 0x1a4], ax
inc ecx
cmp ecx, edx
jl 0x4057a4
mov eax, dword [ebp - 0x20]
lea esi, [ebp - 0x3b0]
inc dword [ebp - 0x1c]
mov edi, eax
mov ecx, 0xaa
mov dword [ebp - 0x1a8], edx
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x44]
add eax, 0x2a8
mov dword [ebp - 0x20], eax
jmp 0x4058a5
mov cl, byte [ebx]
cmp esi, 7
jle 0x405896
cmp dword [ebx], 0x45474944
jne 0x405896
cmp word [ebx + 4], 0x5453
jne 0x405896
movzx eax, byte [ebx + 6]
cmp al, 0x3a
jne 0x405896
add ebx, 7
xor esi, esi
nop dword [eax + eax]
cmp ebx, edi
jae 0x405891
mov al, byte [ebx]
cmp al, 0xa
je 0x405891
cmp al, 0xd
je 0x405891
cmp al, 0x30
jl 0x40583e
cmp al, 0x39
jg 0x40583e
movsx eax, al
sub eax, 0x30
jmp 0x405850
cmp al, 0x41
jl 0x40584e
cmp al, 0x46
jg 0x40584e
movsx eax, al
sub eax, 0x37
jmp 0x405850
xor eax, eax
mov cl, byte [ebx + 1]
cmp cl, 0x30
jl 0x405865
cmp cl, 0x39
jg 0x405865
movsx ecx, cl
sub ecx, 0x30
jmp 0x405879
cmp cl, 0x41
jl 0x405877
cmp cl, 0x46
jg 0x405877
movsx ecx, cl
sub ecx, 0x37
jmp 0x405879
xor ecx, ecx
shl al, 4
add ebx, 2
or al, cl
mov byte [ebp + esi - 0x1658], al
inc esi
cmp esi, 0x1000
jl 0x405820
mov dword [ebp - 0x14], esi
jmp 0x4058a8
cmp cl, 0xa
je 0x4058a4
cmp cl, 0xd
jne 0x405a4c
inc ebx
mov esi, dword [ebp - 0x14]
cmp ebx, edi
jb 0x405423
mov ebx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x18]
mov edx, dword [ebp - 8]
push edx
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
push dword [ebp - 0x48]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [ebp - 0x24]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp byte [ebp - 0xc], 0
jne 0x405d52
test edi, edi
je 0x405c9a
mov ebx, dword [sym.imp.KERNEL32.dll_CreateFileA]
push 0
push 0
push 3
push 0
push 1
push 0x80000000
push edi
mov dword [ebp - 0x14], 0
call ebx
mov esi, eax
test esi, esi
je 0x405c87
cmp esi, 0xffffffff
je 0x405c87
push 0
push 0
push 0
push 2
push 0
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileMappingA]
mov edi, eax
test edi, edi
je 0x405998
cmp edi, 0xffffffff
je 0x405998
push 0
push 0
push 0
push 4
push edi
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
mov ebx, eax
test ebx, ebx
je 0x40598b
lea eax, [ebp - 0x40]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
je 0x405984
cmp dword [ebp - 0x3c], 0
jne 0x405984
mov eax, dword [ebp - 0x40]
test eax, eax
jle 0x405984
imul edx, dword [ebp - 0x1c], 0x2a8
lea ecx, [ebp - 0x1658]
push ecx
push eax
push ebx
lea ecx, [ebp - 0x11ff8]
call fcn.004082d0
add esp, 0xc
mov dword [ebp - 0x14], eax
push ebx
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebx, dword [sym.imp.KERNEL32.dll_CreateFileA]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x405c87
cmp byte [ebp - 0xc], 0
jne 0x405d52
test eax, eax
je 0x405cef
push 0
push 0
push 5
push 0
push 0
push 0x40000000
push str.csgo.signatures
call ebx
mov ebx, eax
mov dword [ebp - 0x24], ebx
test ebx, ebx
je 0x405c87
cmp ebx, 0xffffffff
je 0x405c87
push 0x80
lea eax, [ebp - 0x108]
mov byte [ebp - 1], 1
push 0
push eax
mov byte [ebp - 2], 0
call fcn.0043b3c0
mov ecx, dword [ebp - 0x1c]
add esp, 0xc
mov edi, dword [sym.imp.KERNEL32.dll_WriteFile]
mov dword [ebp - 8], 0
test ecx, ecx
jle 0x405bd8
lea eax, [ebp - 0x11ff8]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x10], eax
mov al, byte [ebp - 1]
nop dword [eax]
test al, al
je 0x405a76
push 0
lea eax, [ebp - 8]
push eax
push 4
push str...._
push ebx
call edi
test eax, eax
je 0x405a76
mov cl, 1
jmp 0x405a78
mov ebx, dword [ebp - 0x10]
mov byte [ebp - 0xc], 1
test ebx, ebx
je 0x405a63
push 2
push 0x463c60
call ebx
add esp, 8
mov esi, dword [ebp - 0x14]
jmp 0x4058b3
mov ebx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x18]
jmp 0x4058b9
xor cl, cl
xor esi, esi
nop word [eax + eax]
mov eax, dword [ebp - 0x10]
cmp word [eax + esi*2], 0
je 0x405ab6
mov al, byte [eax + esi*2]
mov byte [ebp - 2], al
test cl, cl
je 0x405aab
push 0
lea eax, [ebp - 8]
push eax
push 1
lea eax, [ebp - 2]
push eax
push ebx
call edi
test eax, eax
je 0x405aab
mov cl, 1
jmp 0x405aad
xor cl, cl
inc esi
cmp esi, 0x104
jl 0x405a80
mov byte [ebp - 2], 0x7e
test cl, cl
je 0x405ad5
push 0
lea eax, [ebp - 8]
push eax
push 1
lea eax, [ebp - 2]
push eax
push ebx
call edi
mov byte [ebp - 1], 1
test eax, eax
jne 0x405ad9
mov byte [ebp - 1], 0
mov ebx, dword [ebp - 0x10]
lea edi, [ebp - 0x108]
xor esi, esi
nop dword [eax]
nop dword [eax + eax]
movzx eax, byte [ebx + esi + 0x28e]
push eax
push str._02X
push edi
call fcn.00401420
inc esi
add esp, 0xc
add edi, 2
cmp esi, 0x14
jb 0x405af0
cmp byte [ebp - 1], 0
mov ebx, dword [ebp - 0x24]
je 0x405b37
push 0
lea eax, [ebp - 8]
push eax
push 0x28
lea eax, [ebp - 0x108]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov byte [ebp - 1], 1
test eax, eax
jne 0x405b3b
mov byte [ebp - 1], 0
mov ebx, dword [ebp - 0x10]
lea edi, [ebp - 0x108]
xor esi, esi
nop word [eax + eax]
movzx eax, byte [ebx + esi + 0x2a4]
push eax
push str._02X
push edi
call fcn.00401420
inc esi
add esp, 0xc
add edi, 2
cmp esi, 4
jb 0x405b50
cmp byte [ebp - 1], 0
mov ebx, dword [ebp - 0x24]
mov edi, dword [sym.imp.KERNEL32.dll_WriteFile]
je 0x405bb8
push 0
lea eax, [ebp - 8]
push eax
push 8
lea eax, [ebp - 0x108]
push eax
push ebx
call edi
test eax, eax
je 0x405bb8
push 0
lea eax, [ebp - 8]
mov word [ebp - 0x108], 0xa0d
push eax
push 2
lea eax, [ebp - 0x108]
push eax
push ebx
call edi
test eax, eax
je 0x405bc1
mov al, 1
jmp 0x405bc3
mov word [ebp - 0x108], 0xa0d
xor al, al
add dword [ebp - 0x10], 0x2a8
sub dword [ebp - 0x20], 1
jne 0x405a30
test al, al
je 0x405bf0
push 0
lea eax, [ebp - 8]
push eax
push 7
push str.DIGEST:
push ebx
call edi
mov byte [ebp - 1], 1
test eax, eax
jne 0x405bf4
mov byte [ebp - 1], 0
xor esi, esi
cmp dword [ebp - 0x14], esi
jle 0x405c47
nop dword [eax + eax]
movzx eax, byte [ebp + esi - 0x1658]
push eax
lea eax, [ebp - 0x108]
push str._02X
push eax
call fcn.00401420
add esp, 0xc
cmp byte [ebp - 1], 0
je 0x405c3d
push 0
lea eax, [ebp - 8]
push eax
push 2
lea eax, [ebp - 0x108]
push eax
push ebx
call edi
mov byte [ebp - 1], 1
test eax, eax
jne 0x405c41
mov byte [ebp - 1], 0
inc esi
cmp esi, dword [ebp - 0x14]
jl 0x405c00
cmp byte [ebp - 1], 0
mov word [ebp - 0x108], 0xa0d
je 0x405c70
push 0
lea eax, [ebp - 8]
push eax
push 2
lea eax, [ebp - 0x108]
push eax
push ebx
call edi
mov byte [ebp - 1], 1
test eax, eax
jne 0x405c74
mov byte [ebp - 1], 0
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp byte [ebp - 1], 0
sete al
mov dword [ebp - 0xc], eax
jmp 0x405ceb
xor eax, eax
mov byte [ebp - 0xc], 1
cmp byte [ebp - 0xc], al
setne al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x1c]
test eax, eax
jle 0x405d3e
test esi, esi
jle 0x405d3e
push esi
lea ecx, [ebp - 0x1658]
imul edx, eax, 0x2a8
push ecx
sub esp, 8
lea ecx, [ebp - 0x11ff8]
call fcn.00408600
add esp, 0x10
test al, al
sete al
mov dword [ebp - 0xc], eax
test al, al
je 0x405cef
test ebx, ebx
je 0x405ceb
push 2
push 0x463c60
call ebx
mov eax, dword [ebp - 0xc]
add esp, 8
test al, al
jne 0x405d52
mov ebx, dword [ebp - 0x1c]
xor ecx, ecx
mov eax, ebx
mov edx, 0x2a8
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00438211
add esp, 4
imul ecx, ebx, 0x2a8
mov dword [0x475cfc], eax
push ecx
lea ecx, [ebp - 0x11ff8]
push ecx
push eax
call fcn.0043ae40
xor eax, eax
mov dword [0x475ce4], ebx
add esp, 0xc
cmp byte [ebp - 0xc], al
setne al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov byte [ebp - 0xc], 1
test ebx, ebx
je 0x405d52
push 1
push 0x463c60
call ebx
add esp, 8
xor eax, eax
cmp byte [ebp - 0xc], al
pop edi
pop esi
setne al
pop ebx
mov esp, ebp
pop ebp
ret