Function at 0x473530
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x74
mov eax, dword [0x9c48d0]
xor eax, esp
mov dword [esp + 0x70], eax
mov eax, dword [ebp + 8]
push ebx
push esi
xor esi, esi
push edi
mov dword [esp + 0x24], eax
mov dword [esp + 0x40], ecx
cmp ecx, esi
jne 0x47356c
xor al, al
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x70]
xor ecx, esp
call fcn.0065865c
mov esp, ebp
pop ebp
ret
cmp eax, esi
jne 0x473575
mov eax, 0x923408
push 0x923408
push str..smx
push eax
push str._s_s_s
call fcn.00458200
mov ebx, eax
lea eax, [esp + 0x64]
mov dword [esp + 0x60], eax
xor eax, eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
add esp, 0x10
mov eax, ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x64], esi
mov dword [esp + 0x68], esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], 0xf
mov dword [esp + 0x3c], esi
call fcn.004558d0
mov edi, eax
cmp edx, esi
jg 0x4735e0
jl 0x4735dc
cmp edi, esi
jae 0x4735e0
xor eax, eax
jmp 0x47362f
xor eax, eax
cmp edi, edi
jne 0x4735ea
cmp eax, edx
je 0x4735ee
xor eax, eax
jmp 0x47362f
lea eax, [edi + 2]
cmp eax, 2
jae 0x4735fa
xor eax, eax
jmp 0x47362f
push eax
call fcn.00658d9b
mov esi, eax
add esp, 4
test esi, esi
je 0x47362d
push esi
mov eax, ebx
call fcn.00455a80
add esp, 4
test al, al
jne 0x473625
push esi
call fcn.00658a01
add esp, 4
xor eax, eax
jmp 0x47362d
mov word [edi + esi], 0
mov eax, esi
xor esi, esi
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
call fcn.004730d0
mov edi, eax
mov dword [esp + 0x2c], edi
cmp edi, esi
je 0x47373b
mov edi, dword [edi]
mov dword [esp + 0x28], edi
cmp edi, esi
jbe 0x4736c8
mov ecx, dword [esp + 0x40]
mov eax, dword [ecx + 0xc]
mov edx, dword [esp + 0x2c]
mov ebx, dword [edx + 0xc]
lea esi, [eax + 0x2a]
sub eax, ebx
lea edi, [ebx + 0x2a]
mov dword [esp + 0x34], eax
jmp 0x473674
mov eax, dword [esp + 0x34]
mov eax, dword [eax + ebx]
cmp eax, dword [ebx]
jne 0x4736c8
mov ecx, dword [esi - 0x26]
cmp ecx, dword [edi - 0x26]
jne 0x4736c8
lea ecx, [edi - 0x22]
lea edx, [esi - 0x22]
call fcn.00473d30
test al, al
je 0x4736c8
mov dl, byte [edi - 2]
cmp dl, byte [esi - 2]
jne 0x4736c8
mov al, byte [edi - 1]
cmp al, byte [esi - 1]
jne 0x4736c8
mov cl, byte [edi]
cmp cl, byte [esi]
jne 0x4736c8
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x4736c8
mov eax, dword [esp + 0x3c]
inc eax
add esi, 0x30
add ebx, 0x30
add edi, 0x30
mov dword [esp + 0x3c], eax
cmp eax, dword [esp + 0x28]
jb 0x473670
mov esi, dword [esp + 0x30]
mov dword [esp + 0x34], 0
test esi, esi
je 0x4736f4
mov eax, esi
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4736e0
sub eax, edx
push eax
push esi
lea eax, [esp + 0x4c]
call fcn.00412b60
push esi
call fcn.00658a01
mov edi, dword [esp + 0x30]
mov eax, dword [edi + 0xc]
lea ecx, [edi + 0x10]
add esp, 4
cmp eax, ecx
je 0x473730
mov ecx, dword [edi + 0x310]
push eax
test ecx, ecx
jne 0x473729
call fcn.00658a01
add esp, 4
push edi
call fcn.006590fa
add esp, 4
jmp 0x473757
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
call eax
push edi
call fcn.006590fa
add esp, 4
jmp 0x473757
mov edx, dword [esp + 0x24]
call fcn.00454f40
push eax
lea ecx, [esp + 0x48]
push str._SumatraPDF:_modifications_to___S__r_n
push ecx
call fcn.00412870
add esp, 0xc
mov ebx, dword [esp + 0x44]
lea ecx, [ebx + 2]
lea esi, [esp + 0x44]
mov dword [esp + 0x28], ecx
call fcn.00412da0
test al, al
jne 0x473773
xor eax, eax
mov byte [eax], al
mov esi, dword [esp + 0x50]
mov eax, dword [esp + 0x44]
add esi, ebx
cmp eax, ebx
jbe 0x473791
sub eax, ebx
push eax
lea eax, [esi + 2]
push esi
push eax
call fcn.006586a0
add esp, 0xc
mov ecx, dword [esp + 0x28]
mov dx, word [0x923e2c]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x40]
mov word [esi], dx
cmp dword [ecx], eax
jne 0x473822
mov edx, dword [esp + 0x34]
push edx
call fcn.00658a01
mov eax, dword [esp + 0x54]
lea ecx, [esp + 0x58]
add esp, 4
cmp eax, ecx
je 0x473801
mov ecx, dword [esp + 0x64]
push eax
test ecx, ecx
jne 0x4737fa
call fcn.00658a01
mov ecx, dword [esp + 0x3c]
add esp, 4
push ecx
call fcn.00658a01
mov al, 1
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x70]
xor ecx, esp
call fcn.0065865c
mov esp, ebp
pop ebp
ret
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
call eax
mov ecx, dword [esp + 0x38]
push ecx
call fcn.00658a01
mov al, 1
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x70]
xor ecx, esp
call fcn.0065865c
mov esp, ebp
pop ebp
ret
mov eax, str.update
test edi, edi
jne 0x473830
mov eax, str.meta
push eax
lea edx, [esp + 0x48]
push str.___s__r_n
push edx
call fcn.00412870
add esp, 0xc
push 0x923e20
lea eax, [esp + 0x48]
push str.version___s_r_n
push eax
call fcn.00412870
mov eax, dword [esp + 0x30]
add esp, 0xc
call fcn.004558d0
test edx, edx
ja 0x473881
jb 0x47386e
cmp eax, 0xffffffff
ja 0x473881
push eax
lea ecx, [esp + 0x48]
push str.filesize___u_r_n
push ecx
call fcn.00412870
add esp, 0xc
lea edx, [esp + 0x6c]
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemTime]
movzx eax, word [esp + 0x78]
movzx ecx, word [esp + 0x76]
movzx edx, word [esp + 0x74]
push eax
movzx eax, word [esp + 0x76]
push ecx
movzx ecx, word [esp + 0x76]
push edx
movzx edx, word [esp + 0x78]
push eax
push ecx
push edx
lea eax, [esp + 0x5c]
push str.timestamp___04d__02d__02dT_02d:_02d:_02dZ_r_n
push eax
call fcn.00412870
mov edi, dword [esp + 0x64]
lea ebx, [edi + 2]
add esp, 0x20
mov ecx, ebx
lea esi, [esp + 0x44]
call fcn.00412da0
test al, al
jne 0x4738dc
xor eax, eax
mov byte [eax], al
mov esi, dword [esp + 0x50]
mov eax, dword [esp + 0x44]
add esi, edi
cmp eax, edi
jbe 0x4738fa
sub eax, edi
push eax
lea edx, [esi + 2]
push esi
push edx
call fcn.006586a0
add esp, 0xc
mov ax, word [0x923e2c]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x44], ebx
mov word [esi], ax
mov dword [esp + 0x24], ecx
cmp ecx, dword [edx]
jae 0x473a56
lea ecx, [ecx + ecx*2]
shl ecx, 4
mov dword [esp + 0x2c], ecx
mov esi, dword [edx + 0xc]
mov eax, dword [esi + ecx]
add esi, ecx
dec eax
cmp eax, 3
ja case.default.0x473937
jmp dword [eax*4 + 0x473c50]
push 0xd
push str._highlight__r_n
jmp 0x473960
push 0xd
push str._underline__r_n
jmp 0x473960
push 0xd
push str._strikeout__r_n
jmp 0x473960
push 0xc
push str._squiggly__r_n
lea eax, [esp + 0x4c]
call fcn.00412b60
mov ecx, dword [esi + 4]
push ecx
lea edx, [esp + 0x48]
push str.page___d_r_n
push edx
call fcn.00412870
fld qword [esi + 0x20]
sub esp, 0x14
fstp qword [esp + 0x18]
lea eax, [esp + 0x64]
fld qword [esi + 0x18]
fstp qword [esp + 0x10]
fld qword [esi + 0x10]
fstp qword [esp + 8]
fld qword [esi + 8]
fstp qword [esp]
push str.rect___g__g__g__g_r_n
push eax
call fcn.00412870
movzx ecx, byte [esi + 0x2a]
movzx edx, byte [esi + 0x29]
movzx eax, byte [esi + 0x28]
push ecx
push edx
push eax
lea ecx, [esp + 0x78]
push str.color___02x_02x_02x_r_n
push ecx
call fcn.00412870
movzx edx, byte [esi + 0x2b]
mov dword [esp + 0x64], edx
add esp, 0x34
fild dword [esp + 0x30]
lea eax, [esp + 0x4c]
fdiv qword [0x9ad798]
fstp qword [esp]
push str.opacity___g_r_n
push eax
call fcn.00412870
mov edi, dword [esp + 0x54]
lea ebx, [edi + 2]
add esp, 0x10
mov ecx, ebx
lea esi, [esp + 0x44]
call fcn.00412da0
test al, al
jne 0x473a0b
xor eax, eax
mov byte [eax], al
mov esi, dword [esp + 0x50]
mov eax, dword [esp + 0x44]
add esi, edi
cmp eax, edi
jbe 0x473a29
sub eax, edi
push eax
lea edx, [esi + 2]
push esi
push edx
call fcn.006586a0
add esp, 0xc
mov ax, word [0x923e2c]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x44], ebx
mov word [esi], ax
mov eax, dword [esp + 0x24]
inc eax
add ecx, 0x30
mov dword [esp + 0x24], eax
mov dword [esp + 0x2c], ecx
cmp eax, dword [edx]
jb 0x473925
mov eax, dword [esp + 0x44]
lea edx, [eax - 2]
lea ecx, [edx + 2]
cmp eax, ecx
jbe 0x473a81
mov ecx, dword [esp + 0x50]
sub eax, edx
add ecx, edx
sub eax, 2
push eax
lea edx, [ecx + 2]
push edx
push ecx
call fcn.006586a0
mov eax, dword [esp + 0x50]
add esp, 0xc
mov edx, dword [esp + 0x50]
sub eax, 2
xor ecx, ecx
mov dword [esp + 0x44], eax
mov word [edx + eax], cx
xor edi, edi
call fcn.0045f190
mov eax, dword [0x9f4f24]
test eax, eax
je 0x473acd
cmp dword [0x9f4f28], edi
je 0x473acd
cmp dword [0x9f4f2c], edi
je 0x473acd
cmp dword [0x9f4f30], edi
je 0x473acd
cmp dword [0x9f4f34], edi
je 0x473acd
push edi
push edi
push edi
push edi
push edi
push edi
push edi
call eax
mov edi, eax
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x44]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x24], eax
push 0
test edi, edi
jne 0x473b3d
push 0x80
push 2
push edi
push 1
push 0x40000000
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
jne 0x473b10
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push eax
call esi
xor al, al
jmp 0x473c09
mov eax, dword [esp + 0x24]
push 0
lea edx, [esp + 0x2c]
push edx
push ebx
push eax
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x473bfc
cmp ebx, dword [esp + 0x28]
jne 0x473bfc
mov bl, 1
jmp 0x473bfe
push 0
push edi
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push ecx
call dword [0x9f4f30]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, 0xffffffff
jne 0x473bda
cmp eax, 2
je 0x473b9b
cmp eax, 5
je 0x473b9b
cmp eax, 0x50
je 0x473b9b
cmp eax, 0xb7
je 0x473b9b
mov edx, dword [esp + 0x38]
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
jne 0x473bda
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
xor bl, bl
push edi
call esi
mov edx, dword [esp + 0x34]
push edx
call fcn.00658a01
mov eax, dword [esp + 0x54]
lea ecx, [esp + 0x58]
add esp, 4
cmp eax, ecx
je 0x473c2c
mov ecx, dword [esp + 0x64]
push eax
test ecx, ecx
jne 0x473c25
call fcn.00658a01
add esp, 4
jmp 0x473c2c
mov ecx, dword [esp + 0x24]
push 0
lea eax, [esp + 0x30]
push eax
push ebx
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x473bfc
cmp ebx, dword [esp + 0x2c]
jne 0x473bfc
mov bl, 1
jmp 0x473bfe
xor bl, bl
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
mov al, bl
test al, al
je 0x473ba9
test edi, edi
je 0x473c21
push edi
call dword [0x9f4f28]
test eax, eax
setne al
test al, al
je 0x473ba9
mov bl, 1
jmp 0x473bab
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
call eax
mov ecx, dword [esp + 0x38]
push ecx
call fcn.00658a01
mov ecx, dword [esp + 0x80]
add esp, 4
pop edi
pop esi
mov al, bl
pop ebx
xor ecx, esp
call fcn.0065865c
mov esp, ebp
pop ebp
ret