Function at 0x404410
Capabilities:
Check for time delay via gettickcount

Disassembly:
sub esp, 0x40
push ebx
push ebp
push esi
push edi
mov ebx, 0xe100
mov edi, 0x7080
mov esi, ecx
push 0xa
mov dword [esp + 0x20], 0xe1000
mov dword [esp + 0x24], 0x70800
mov dword [esp + 0x28], 0x38400
mov dword [esp + 0x2c], 0x1c200
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], 0x9600
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], 0x4b00
mov dword [esp + 0x40], 0x3840
mov dword [esp + 0x44], 0x2580
mov dword [esp + 0x48], 0x12c0
mov dword [esp + 0x4c], 0x960
mov dword [esp + 0x50], 0x4b0
call dword [sym.imp.KERNEL32.dll_Sleep]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0xb4]
test eax, eax
mov eax, 0x422be4
jne 0x4044a9
mov eax, str._r_nRe_handshaking_...
push eax
push esi
call fcn.00401660
mov eax, dword [esi + 0xf8]
add esp, 8
shl eax, 5
mov ecx, dword [eax + 0x413448]
shr ecx, 0xe
and ecx, 0xff
lea eax, [ecx - 1]
cmp eax, 0x20
ja case.0x4044df.3
xor edx, edx
mov dl, byte [eax + 0x4050c0]
jmp dword [edx*4 + 0x4050b4]
mov eax, dword [esi + 0x148]
mov byte [esi + 0x610], 0x8f
cmp eax, 2
jne 0x404897
mov ebp, dword [esi + 0xc4]
fild dword [esi + 0xf0]
mov dword [esp + 0x10], ebp
fild dword [esp + 0x10]
fdivr st(1)
fst dword [esp + 0x10]
fmul dword [0x41aa88]
fcomp dword [0x41aa84]
fnstsw ax
test ah, 0x41
jne 0x4047ca
fld dword [esp + 0x10]
fmul dword [0x41aa80]
fcomp dword [0x41aa84]
fnstsw ax
test ah, 0x41
jne 0x4046fd
fld dword [esp + 0x10]
fmul dword [0x41aa7c]
fcomp dword [0x41aa84]
fnstsw ax
test ah, 0x41
jne 0x404630
mov byte [esi + 0x611], 0
xor edi, edi
lea ebx, [esp + 0x1c]
fild dword [ebx]
fld st(1)
fdiv st(1)
fmul dword [0x41aa78]
fadd qword [0x41aa70]
call sub.MSVCRT.dll__ftol
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fdivr st(2)
fmul dword [0x41aa78]
fsub st(1)
fdivrp st(1)
fcom dword [0x41aa6c]
fnstsw ax
test ah, 0x41
jne 0x4045b7
fcomp dword [0x41aa68]
fnstsw ax
test ah, 1
jne 0x4045c2
jmp 0x4045b9
fstp st(0)
inc edi
add ebx, 4
cmp edi, 0xd
jb 0x404570
mov ecx, 0xc
lea edx, [esp + 0x4c]
fild dword [edx]
fdivr st(1)
fmul dword [0x41aa78]
fcomp dword [0x41aa84]
fnstsw ax
test ah, 1
jne 0x4045ea
dec ecx
sub edx, 4
test ecx, ecx
jge 0x4045cb
mov edi, dword [esp + edi*4 + 0x1c]
mov eax, ebp
cmp ebp, edi
jl 0x4045f6
mov eax, edi
mov ecx, dword [esp + ecx*4 + 0x1c]
cmp eax, ecx
jle 0x404606
cmp ebp, edi
jge 0x404608
mov edi, ebp
jmp 0x404608
mov edi, ecx
mov dword [esp + 0x10], edi
mov dword [esi + 0xc4], edi
fild dword [esp + 0x10]
fdivr st(1)
fmul dword [0x41aa78]
fadd qword [0x41aa70]
call sub.MSVCRT.dll__ftol
fstp st(0)
jmp 0x40498b
mov byte [esi + 0x611], 0x80
xor edi, edi
lea ebx, [esp + 0x1c]
fild dword [ebx]
fld st(1)
fdiv st(1)
fmul dword [0x41aa7c]
fadd qword [0x41aa70]
call sub.MSVCRT.dll__ftol
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fdivr st(2)
fmul dword [0x41aa7c]
fsub st(1)
fdivrp st(1)
fcom dword [0x41aa6c]
fnstsw ax
test ah, 0x41
jne 0x404684
fcomp dword [0x41aa68]
fnstsw ax
test ah, 1
jne 0x40468f
jmp 0x404686
fstp st(0)
inc edi
add ebx, 4
cmp edi, 0xd
jb 0x40463d
mov ecx, 0xc
lea edx, [esp + 0x4c]
fild dword [edx]
fdivr st(1)
fmul dword [0x41aa7c]
fcomp dword [0x41aa84]
fnstsw ax
test ah, 1
jne 0x4046b7
dec ecx
sub edx, 4
test ecx, ecx
jge 0x404698
mov edi, dword [esp + edi*4 + 0x1c]
mov eax, ebp
cmp ebp, edi
jl 0x4046c3
mov eax, edi
mov ecx, dword [esp + ecx*4 + 0x1c]
cmp eax, ecx
jle 0x4046d3
cmp ebp, edi
jge 0x4046d5
mov edi, ebp
jmp 0x4046d5
mov edi, ecx
mov dword [esp + 0x10], edi
mov dword [esi + 0xc4], edi
fild dword [esp + 0x10]
fdivr st(1)
fmul dword [0x41aa7c]
fadd qword [0x41aa70]
call sub.MSVCRT.dll__ftol
fstp st(0)
jmp 0x40498b
mov byte [esi + 0x611], 0x40
xor edi, edi
lea ebx, [esp + 0x1c]
fild dword [ebx]
fld st(1)
fdiv st(1)
fmul dword [0x41aa80]
fadd qword [0x41aa70]
call sub.MSVCRT.dll__ftol
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fdivr st(2)
fmul dword [0x41aa80]
fsub st(1)
fdivrp st(1)
fcom dword [0x41aa6c]
fnstsw ax
test ah, 0x41
jne 0x404751
fcomp dword [0x41aa68]
fnstsw ax
test ah, 1
jne 0x40475c
jmp 0x404753
fstp st(0)
inc edi
add ebx, 4
cmp edi, 0xd
jb 0x40470a
mov ecx, 0xc
lea edx, [esp + 0x4c]
fild dword [edx]
fdivr st(1)
fmul dword [0x41aa80]
fcomp dword [0x41aa84]
fnstsw ax
test ah, 1
jne 0x404784
dec ecx
sub edx, 4
test ecx, ecx
jge 0x404765
mov edi, dword [esp + edi*4 + 0x1c]
mov eax, ebp
cmp ebp, edi
jl 0x404790
mov eax, edi
mov ecx, dword [esp + ecx*4 + 0x1c]
cmp eax, ecx
jle 0x4047a0
cmp ebp, edi
jge 0x4047a2
mov edi, ebp
jmp 0x4047a2
mov edi, ecx
mov dword [esp + 0x10], edi
mov dword [esi + 0xc4], edi
fild dword [esp + 0x10]
fdivr st(1)
fmul dword [0x41aa80]
fadd qword [0x41aa70]
call sub.MSVCRT.dll__ftol
fstp st(0)
jmp 0x40498b
mov byte [esi + 0x611], 0xc0
xor edi, edi
lea ebx, [esp + 0x1c]
fild dword [ebx]
fld st(1)
fdiv st(1)
fmul dword [0x41aa88]
fadd qword [0x41aa70]
call sub.MSVCRT.dll__ftol
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fdivr st(2)
fmul dword [0x41aa88]
fsub st(1)
fdivrp st(1)
fcom dword [0x41aa6c]
fnstsw ax
test ah, 0x41
jne 0x40481e
fcomp dword [0x41aa68]
fnstsw ax
test ah, 1
jne 0x404829
jmp 0x404820
fstp st(0)
inc edi
add ebx, 4
cmp edi, 0xd
jb 0x4047d7
mov ecx, 0xc
lea edx, [esp + 0x4c]
fild dword [edx]
fdivr st(1)
fmul dword [0x41aa88]
fcomp dword [0x41aa84]
fnstsw ax
test ah, 1
jne 0x404851
dec ecx
sub edx, 4
test ecx, ecx
jge 0x404832
mov edi, dword [esp + edi*4 + 0x1c]
mov eax, ebp
cmp ebp, edi
jl 0x40485d
mov eax, edi
mov ecx, dword [esp + ecx*4 + 0x1c]
cmp eax, ecx
jle 0x40486d
cmp ebp, edi
jge 0x40486f
mov edi, ebp
jmp 0x40486f
mov edi, ecx
mov dword [esp + 0x10], edi
mov dword [esi + 0xc4], edi
fild dword [esp + 0x10]
fdivr st(1)
fmul dword [0x41aa88]
fadd qword [0x41aa70]
call sub.MSVCRT.dll__ftol
fstp st(0)
jmp 0x40498b
cmp eax, 3
jne 0x404993
fild dword [esi + 0xf0]
xor edi, edi
lea ebx, [esp + 0x1c]
fild dword [ebx]
fld st(1)
fdiv st(1)
fmul dword [0x41aa80]
fcom dword [0x41aa64]
fnstsw ax
test ah, 1
jne 0x404900
fadd qword [0x41aa70]
call sub.MSVCRT.dll__ftol
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fdivr st(2)
fmul dword [0x41aa80]
fsub st(1)
fdivrp st(1)
fcom dword [0x41aa6c]
fnstsw ax
test ah, 0x41
jne 0x404902
fcomp dword [0x41aa68]
fnstsw ax
test ah, 1
jne 0x40490d
jmp 0x404904
fstp st(0)
fstp st(0)
inc edi
add ebx, 4
cmp edi, 0xd
jb 0x4048ac
mov ecx, 0xc
lea edx, [esp + 0x4c]
fild dword [edx]
fdivr st(1)
fmul dword [0x41aa80]
fcomp dword [0x41aa60]
fnstsw ax
test ah, 1
jne 0x404935
dec ecx
sub edx, 4
test ecx, ecx
jge 0x404916
mov eax, dword [esi + 0xc4]
mov edi, dword [esp + edi*4 + 0x1c]
cmp eax, edi
mov edx, eax
jl 0x404947
mov edx, edi
mov ecx, dword [esp + ecx*4 + 0x1c]
cmp edx, ecx
jle 0x404957
cmp eax, edi
jl 0x404959
mov eax, edi
jmp 0x404959
mov eax, ecx
mov dword [esp + 0x10], eax
mov dword [esi + 0xc4], eax
fidiv dword [esp + 0x10]
fmul dword [0x41aa80]
fadd qword [0x41aa70]
fld st(0)
call sub.MSVCRT.dll__ftol
neg eax
xor ecx, ecx
mov cl, ah
mov byte [esi + 0x611], cl
call sub.MSVCRT.dll__ftol
neg al
mov byte [esi + 0x612], al
mov bl, byte [esi + 0x611]
xor eax, eax
mov al, byte [esi + 0x612]
or dl, 0xff
mov ecx, eax
mov eax, 0x100
sub eax, ecx
sub dl, bl
shl eax, 1
cmp eax, 0xfe
mov byte [esi + 0x613], dl
jle 0x4049c3
mov eax, 0xfe
mov ecx, dword [esi + 0xc0]
mov byte [esi + 0x614], al
mov eax, 0x1b4e81b5
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
shl eax, 2
cmp eax, 0xfa
jg 0x404a00
cmp eax, 0x28
jge 0x4049f9
mov eax, 0x28
jmp 0x404a05
cmp eax, 0xfa
jle 0x404a05
mov eax, 0xfa
mov ecx, esi
mov byte [esi + 0x615], al
call fcn.00402130
mov ecx, dword [esi + 0x12c]
mov byte [esi + 0x616], al
cmp ecx, 0x72
jl 0x404a3a
lea ecx, [esi + 0x610]
push 4
mov byte [esi + 0x613], al
push ecx
mov byte [ecx], 1
jmp 0x404e8a
lea eax, [esi + 0x610]
push 7
push eax
mov ecx, esi
call fcn.00401c00
mov ecx, dword [esi + 0xc4]
push 0x8f
push ecx
mov ecx, esi
call fcn.00401fa0
push 0x1388
mov ecx, esi
call fcn.00401f50
push 1
push 0
mov ecx, esi
call fcn.00401cf0
mov al, byte [esi + 0x17]
test al, al
je 0x405098
mov ecx, esi
call fcn.00401f70
test al, al
jne 0x4050a5
lea edx, [esi + 0x210]
push 1
push edx
mov ecx, esi
call fcn.00401cf0
test al, al
je 0x404a74
cmp byte [esi + 0x210], 0x8f
je 0x404ab8
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x40
ret
mov eax, dword [esi + 0xc0]
push 0xffffffffffffffff
push eax
mov ecx, esi
call fcn.00401fa0
lea eax, [esi + 0x610]
push 6
mov byte [eax], 0x8e
jmp 0x404e89
cmp dword [esi + 0x12c], 0x71
jge case.0x4044df.3
mov eax, dword [esi + 0xf0]
lea ebp, [esi + 0x610]
cmp eax, 0x1312d00
mov dword [esp + 0x10], eax
mov byte [ebp], 0x8e
jge 0x404b2c
mov ecx, dword [esi + 0xc4]
mov byte [esi + 0x611], 0x58
test ecx, ecx
mov byte [esi + 0x618], 0x83
jne 0x404b1e
mov dword [esi + 0xc4], edi
mov ecx, dword [esi + 0xc4]
cmp ecx, edi
jl 0x404b56
mov ecx, edi
jmp 0x404b56
mov ecx, dword [esi + 0xc4]
mov byte [esi + 0x611], 0x98
test ecx, ecx
mov byte [esi + 0x618], 0x81
jne 0x404b4a
mov dword [esi + 0xc4], ebx
mov ecx, dword [esi + 0xc4]
cmp ecx, ebx
jl 0x404b56
mov ecx, ebx
mov dword [esi + 0xc4], ecx
mov cl, byte [esi + 0x20c]
mov byte [esi + 0x612], cl
mov ecx, dword [esi + 0xc4]
test ecx, ecx
jne 0x404b8b
xor edx, edx
cmp eax, 0x1312d00
setge dl
dec edx
and edx, 0xffff8f80
add edx, ebx
mov dword [esi + 0xc4], edx
cdq
idiv dword [esi + 0xc4]
mov ebx, eax
mov eax, 0x51eb851f
imul ebx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
jne 0x404bb8
neg bl
mov byte [esi + 0x613], 0
mov byte [esi + 0x614], bl
jmp 0x404bd5
mov cl, dl
mov eax, ebx
inc cl
mov byte [esi + 0x613], cl
and ecx, 0xff
cdq
idiv ecx
neg al
mov byte [esi + 0x614], al
fild dword [esp + 0x10]
mov byte [esi + 0x615], 0x64
fmul dword [0x41aa5c]
fsubr dword [0x41aa58]
call sub.MSVCRT.dll__ftol
and eax, 0xffff
xor ecx, ecx
mov cl, ah
push 0xc
mov byte [esi + 0x616], cl
mov byte [esi + 0x617], al
mov byte [esi + 0x619], 0x20
mov byte [esi + 0x61a], 0xff
mov byte [esi + 0x61b], 0
push ebp
jmp 0x404e8a
mov al, byte [esi + 0x20d]
mov dl, byte [esi + 0x20c]
mov byte [esi + 0x612], al
mov eax, dword [esi + 0x148]
test eax, eax
mov byte [esi + 0x610], 1
mov byte [esi + 0x611], dl
jne 0x404d87
fild dword [esi + 0xf0]
xor edi, edi
lea ebx, [esp + 0x1c]
fild dword [ebx]
fld st(1)
fdiv st(1)
fcom dword [0x41aa54]
fnstsw ax
test ah, 1
jne 0x404ca4
fadd qword [0x41aa70]
call sub.MSVCRT.dll__ftol
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fdivr st(2)
fsub st(1)
fdivrp st(1)
fcom dword [0x41aa6c]
fnstsw ax
test ah, 0x41
jne 0x404ca6
fcomp dword [0x41aa68]
fnstsw ax
test ah, 1
jne 0x404cb1
jmp 0x404ca8
fstp st(0)
fstp st(0)
inc edi
add ebx, 4
cmp edi, 0xd
jb 0x404c5c
mov ecx, 0xc
lea edx, [esp + 0x4c]
fild dword [edx]
fdivr st(1)
fcomp dword [0x41aa50]
fnstsw ax
test ah, 1
jne 0x404cd3
dec ecx
sub edx, 4
test ecx, ecx
jge 0x404cba
mov eax, dword [esi + 0xc4]
mov edi, dword [esp + edi*4 + 0x1c]
cmp eax, edi
mov edx, eax
jl 0x404ce5
mov edx, edi
mov ecx, dword [esp + ecx*4 + 0x1c]
cmp edx, ecx
jle 0x404cf9
cmp eax, edi
jge 0x404cf5
mov edx, eax
jmp 0x404cfb
mov edx, edi
jmp 0x404cfb
mov edx, ecx
cmp edx, 0x9600
jle 0x404d0a
mov eax, 0x9600
jmp 0x404d20
cmp eax, edi
mov edx, eax
jl 0x404d12
mov edx, edi
cmp edx, ecx
jle 0x404d1e
cmp eax, edi
jl 0x404d20
mov eax, edi
jmp 0x404d20
mov eax, ecx
mov dword [esp + 0x10], eax
mov dword [esi + 0xc4], eax
fidiv dword [esp + 0x10]
fld st(0)
fadd qword [0x41aa70]
fld st(0)
call sub.MSVCRT.dll__ftol
neg eax
xor ecx, ecx
mov cl, ah
mov byte [esi + 0x613], cl
call sub.MSVCRT.dll__ftol
fmul qword [0x41aa48]
neg al
mov byte [esi + 0x614], al
fadd qword [0x41aa70]
fld st(0)
call sub.MSVCRT.dll__ftol
neg eax
xor edx, edx
mov dl, ah
mov byte [esi + 0x615], dl
call sub.MSVCRT.dll__ftol
neg al
mov byte [esi + 0x616], al
jmp 0x404e74
cmp eax, 1
jne 0x404e74
fild dword [esi + 0xf0]
xor edi, edi
lea ebx, [esp + 0x1c]
fild dword [ebx]
fld st(1)
fdiv st(1)
fmul dword [0x41aa40]
fadd qword [0x41aa70]
call sub.MSVCRT.dll__ftol
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fdivr st(2)
fmul dword [0x41aa40]
fsub st(1)
fdivrp st(1)
fcom dword [0x41aa6c]
fnstsw ax
test ah, 0x41
jne 0x404de3
fcomp dword [0x41aa68]
fnstsw ax
test ah, 1
jne 0x404dee
jmp 0x404de5
fstp st(0)
inc edi
add ebx, 4
cmp edi, 0xd
jb 0x404d9c
mov ecx, 0xc
lea edx, [esp + 0x4c]
fild dword [edx]
fdivr st(1)
fmul dword [0x41aa40]
fcomp dword [0x41aa60]
fnstsw ax
test ah, 1
jne 0x404e16
dec ecx
sub edx, 4
test ecx, ecx
jge 0x404df7
mov eax, dword [esi + 0xc4]
mov edi, dword [esp + edi*4 + 0x1c]
cmp eax, edi
mov edx, eax
jl 0x404e28
mov edx, edi
mov ecx, dword [esp + ecx*4 + 0x1c]
cmp edx, ecx
jle 0x404e38
cmp eax, edi
jl 0x404e3a
mov eax, edi
jmp 0x404e3a
mov eax, ecx
mov dword [esp + 0x10], eax
mov dword [esi + 0xc4], eax
fidiv dword [esp + 0x10]
fmul dword [0x41aa40]
fadd qword [0x41aa70]
fld st(0)
call sub.MSVCRT.dll__ftol
neg eax
xor ecx, ecx
mov cl, ah
mov byte [esi + 0x613], cl
call sub.MSVCRT.dll__ftol
neg al
mov byte [esi + 0x614], al
mov ecx, esi
call fcn.00402130
mov byte [esi + 0x617], al
push 8
lea eax, [esi + 0x610]
push eax
mov ecx, esi
call fcn.00401c00
cmp dword [esi + 0x144], 3
jge 0x404ead
mov edx, dword [esi + 0xc4]
push 0x8e
push edx
mov ecx, esi
call fcn.00401fa0
push 0x1388
mov ecx, esi
call fcn.00401f50
push 1
push 0
mov ecx, esi
call fcn.00401cf0
mov al, byte [esi + 0x17]
test al, al
je 0x405098
mov ecx, esi
call fcn.00401f70
test al, al
jne 0x4050a5
lea eax, [esi + 0x210]
push 1
push eax
mov ecx, esi
call fcn.00401cf0
test al, al
je 0x404ec4
mov eax, dword [esi + 0x144]
test eax, eax
jne 0x404f1a
mov cl, byte [esi + 0x210]
lea edi, [esi + 0x210]
cmp cl, 0x8e
je 0x404f53
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x40
ret
cmp eax, 3
lea edi, [esi + 0x210]
jl 0x404f41
mov cl, byte [esi + 0x610]
mov dl, byte [edi]
and cl, 0xf
cmp dl, cl
je 0x404f53
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x40
ret
cmp byte [edi], 0x84
je 0x404f53
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x40
ret
cmp eax, 3
jl 0x404f68
mov edx, dword [esi + 0xc4]
push 0xffffffffffffffff
push edx
mov ecx, esi
call fcn.00401fa0
mov eax, dword [esi + 0x144]
test eax, eax
jne 0x405023
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esi + 0xf8]
xor ecx, ecx
shl eax, 5
mov byte [esi + 0x610], 0x80
mov byte [esi + 0x611], 0
lea eax, [eax + 0x413450]
mov byte [esi + 0x612], 0
mov byte [esi + 0x613], 0x36
mov byte [esi + 0x614], 1
mov cl, byte [eax + 1]
xor ebx, ebx
mov byte [esi + 0x615], cl
mov dl, byte [eax]
mov byte [esi + 0x616], dl
lea eax, [esi + 0x610]
push 7
push eax
mov ecx, esi
call fcn.00401c00
push 0x1388
mov ecx, esi
call fcn.00401f50
push 1
push 0
mov ecx, esi
call fcn.00401cf0
mov al, byte [esi + 0x17]
test al, al
je 0x405098
mov ecx, esi
call fcn.00401f70
test al, al
jne 0x4050a5
push 1
push edi
mov ecx, esi
call fcn.00401cf0
test al, al
je 0x404fec
cmp byte [edi], 0x80
jne 0x404f46
inc ebx
cmp ebx, 5
jl 0x404fc5
mov eax, dword [esi + 0xb4]
mov edi, 0x422bb8
test eax, eax
jne 0x405037
mov edi, str.Successful_t_t_t__.3f___r_n
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x18], 0
sub eax, ecx
sub esp, 8
mov dword [esp + 0x1c], eax
fild qword [esp + 0x1c]
fmul dword [0x41aa3c]
fstp qword [esp]
push edi
push esi
call fcn.00401660
mov eax, dword [esi + 0xb4]
add esp, 0x10
test eax, eax
mov eax, 0x422b8c
jne 0x40507d
mov eax, str.Current_Baudrate:__d_r_n
mov ecx, dword [esi + 0xc4]
push ecx
push eax
push esi
call fcn.00401660
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x40
ret
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
add esp, 0x40
ret
pop edi
pop esi
pop ebp
mov eax, 2
pop ebx
add esp, 0x40
ret